PHP使用静态方法的几个注意事项


Posted in PHP onSeptember 16, 2014

本文实例介绍了PHP使用静态方法的几个常见注意事项。分享给大家供大家参考。具体方法如下:

1. 即使类中的方法并未用static声明,但其未使用到可改变的类成员变量,在外部仍可用操作符::来调用

2. 以静态方式(用::操作符)调用的方法中$this的取值是由调用时的上下文决定的!而不是定义他的类!!

例如以下的代码:

<?php 
class TestClass1 
{ 
  public $normal_v = 'normal_v from TestClass1'; 
  public static $STATIC_V = 'STATIC_V from TestClass1'; 
  public function test_func1() 
  { 
    echo $this->normal_v.'<br />'.self::$STATIC_V; 
  } 
} 
class TestClass2 
{ 
  public $normal_v = 'normal_v from TestClass2'; 
  public static $STATIC_V = 'STATIC_V from TestClass2'; 
  public function test_func2() 
  { 
    TestClass1::test_func1(); 
  } 
} 
$t2 = new TestClass2(); 
$t2->test_func2();

这段代码是输出会是什么呢,我原以为会是normal_v from TestClass1 <br /> STATIC_V from TestClass1,测试发现其实我错了,正确的输出是:

normal_v from TestClass2
STATIC_V from TestClass1

说明:test_func1()虽然是在TestClass1中定义的,但却是在TestClass2中调用的,其内部的$this变量则是由TestClass2决定的!

其实这两个类的关系应该属于"双向关联".

感兴趣的朋友可以测试运行本文实例,相信会有新的收获!

PHP 相关文章推荐
不错的一篇面向对象的PHP开发模式(简写版)
Mar 15 PHP
PHP 删除文件与文件夹操作 unlink()与rmdir()这两个函数的使用
Jul 17 PHP
php类中private属性继承问题分析
Nov 01 PHP
PHP批量采集下载美女图片的实现代码
Jun 03 PHP
解析Linux下Varnish缓存的配置优化
Jun 20 PHP
在Ubuntu 14.04上部署 PHP 环境及 WordPress
Sep 02 PHP
php类的扩展和继承用法实例
Jun 20 PHP
PHP使用strtotime获取上个月、下个月、本月的日期
Dec 30 PHP
joomla数据库操作示例代码
Jan 06 PHP
thinkPHP5.1框架使用SemanticUI实现分页功能示例
Aug 03 PHP
laravel 字段格式化 modle 字段类型转换方法
Sep 30 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
Feb 15 PHP
PHP处理JSON字符串key缺少双引号的解决方法
Sep 16 #PHP
php中使用PHPExcel读写excel(xls)文件的方法
Sep 15 #PHP
PHP常量使用的几个需要注意的地方(谨慎使用PHP中的常量)
Sep 12 #PHP
php修改指定文件后缀的方法
Sep 11 #PHP
MyEclipse常用配置图文教程
Sep 11 #PHP
Linux下PHP安装mcrypt扩展模块笔记
Sep 10 #PHP
PHP下的Oracle客户端扩展(OCI8)安装教程
Sep 10 #PHP
You might like
php中的字符编码转换函数用法示例
2014/10/20 PHP
php实现Session存储到Redis
2015/11/11 PHP
使用Composer安装Yii框架的方法
2016/03/15 PHP
PHP数字金额转换成中文大写显示
2019/01/05 PHP
PHP CURL使用详解
2019/03/21 PHP
理解JavaScript中的事件
2006/09/23 Javascript
javascript oop开发滑动(slide)菜单控件
2010/08/25 Javascript
iframe 上下滚动条如何默认在下方实现原理
2012/12/10 Javascript
在JS中如何调用JSP中的变量
2014/01/22 Javascript
JavaScript生成SQL查询表单的方法
2015/08/13 Javascript
JavaScript如何禁止Backspace键
2015/12/02 Javascript
用jQuery的AJax实现异步访问、异步加载
2016/11/02 Javascript
微信小程序-详解数据缓存
2016/11/24 Javascript
浅析JS中常用类型转换及运算符表达式
2017/07/23 Javascript
jQuery实现的粘性滚动导航栏效果实例【附源码下载】
2017/10/19 jQuery
Vue调试神器vue-devtools安装方法
2017/12/12 Javascript
vue的一个分页组件的示例代码
2017/12/25 Javascript
通过封装scroll.js 获取滚动条的值
2018/07/13 Javascript
原生JS实现前端本地文件上传
2018/09/08 Javascript
jQuery移动端跑马灯抽奖特效升级版(抽奖概率固定)实现方法
2019/01/18 jQuery
微信小程序实现的一键连接wifi功能示例
2019/04/24 Javascript
Vue父子传递实例讲解
2020/02/14 Javascript
vue 如何使用递归组件
2020/10/23 Javascript
python采用django框架实现支付宝即时到帐接口
2016/05/17 Python
从0开始的Python学习016异常
2019/04/08 Python
对Python _取log的几种方式小结
2019/07/25 Python
python 下载m3u8视频的示例代码
2020/11/11 Python
基于HTML5超酷摄像头(HTML5 webcam)拍照功能实现代码
2012/12/13 HTML / CSS
Eton丹麦官网:精美的男式衬衫
2020/05/27 全球购物
加拿大户外探险购物网站:SAIL
2020/06/27 全球购物
5s推行计划书
2014/05/06 职场文书
2014年度个人工作总结
2014/11/07 职场文书
论文答谢词
2015/01/20 职场文书
信贷客户经理岗位职责
2015/04/09 职场文书
比较node.js和Deno
2021/04/27 Javascript
什么是css原子化,有什么用?
2022/04/24 HTML / CSS