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 daodb插入、更新与删除数据
Mar 19 PHP
php getimagesize 上传图片的长度和宽度检测代码
May 15 PHP
php 求质素(素数) 的实现代码
Apr 12 PHP
php比较两个绝对时间的大小
Jan 31 PHP
PHP多维数组遍历方法(2种实现方法)
Dec 10 PHP
php使用get_class_methods()函数获取分类的方法
Jul 20 PHP
PHP中in_array函数使用的问题与解决办法
Sep 11 PHP
tp5(thinkPHP5)操作mongoDB数据库的方法
Jan 20 PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
Sep 07 PHP
laravel5使用freetds连接sql server的方法
Dec 07 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
Nov 25 PHP
laravel框架学习笔记之组件化开发实现方法
Feb 01 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在线代理转向代码
2012/05/05 PHP
PHP获取网页所有连接的方法(附demo源码下载)
2016/03/30 PHP
Laravel框架自定义验证过程实例分析
2019/02/01 PHP
jQuery语法总结和注意事项小结
2012/11/11 Javascript
jquery和javascript的区别(常用方法比较)
2013/07/04 Javascript
javascript中setInterval的用法
2015/07/19 Javascript
如何用angularjs制作一个完整的表格
2016/01/21 Javascript
关于cookie的初识和运用(js和jq)
2016/04/07 Javascript
jQuery获取radio选中项的值实例
2016/06/18 Javascript
如何在JS中实现相互转换XML和JSON
2016/07/19 Javascript
你知道setTimeout是如何运行的吗?
2016/08/16 Javascript
jQuery实现磁力图片跟随效果完整示例
2016/09/16 Javascript
JS实现HTML标签转义及反转义
2020/04/14 Javascript
JS高仿抛物线加入购物车特效实现代码
2017/02/20 Javascript
微信JSAPI Ticket接口签名详解
2020/06/28 Javascript
web前端vue实现插值文本和输出原始html
2018/01/19 Javascript
35个最好用的Vue开源库(史上最全)
2019/01/03 Javascript
layui2.0使用table+laypage实现真分页
2019/07/27 Javascript
Node.js API详解之 V8模块用法实例分析
2020/06/05 Javascript
Python中优化NumPy包使用性能的教程
2015/04/23 Python
对Python 窗体(tkinter)树状数据(Treeview)详解
2018/10/11 Python
Python实现堡垒机模式下远程命令执行操作示例
2019/05/09 Python
django框架使用方法详解
2019/07/18 Python
Django缓存系统实现过程解析
2019/08/02 Python
python数据类型之间怎么转换技巧分享
2019/08/20 Python
调用其他python脚本文件里面的类和方法过程解析
2019/11/15 Python
python 解决flask 图片在线浏览或者直接下载的问题
2020/01/09 Python
python 使用递归实现打印一个数字的每一位示例
2020/02/27 Python
在django中实现choices字段获取对应字段值
2020/07/12 Python
浅谈CSS3鼠标移入图片动态提示效果(transform)
2017/11/06 HTML / CSS
html5本地存储_动力节点Java学院整理
2017/07/12 HTML / CSS
通过Canvas及File API缩放并上传图片完整示例
2013/08/08 HTML / CSS
物理力学求职信
2014/02/18 职场文书
小学安全工作汇报材料
2014/08/19 职场文书
婚宴邀请函
2015/01/30 职场文书
党员自我评价2015
2015/03/03 职场文书