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执行速度全攻略(下)
Oct 09 PHP
PHP开发入门教程之面向对象
Dec 05 PHP
php下实现伪 url 的超简单方法[转]
Sep 24 PHP
php通过文件头检测文件类型通用代码类(zip,rar等)
Oct 19 PHP
centos 5.6 升级php到5.3的方法
May 14 PHP
php小经验:解析preg_match与preg_match_all 函数
Jun 29 PHP
查找php配置文件php.ini所在路径的二种方法
May 26 PHP
CentOS6.5 编译安装lnmp环境
Dec 21 PHP
Laravel 5框架学习之用户认证
Apr 09 PHP
smarty中改进truncate使其支持中文的方法
May 30 PHP
PHP simplexml_load_file()函数讲解
Feb 03 PHP
PHP isset()及empty()用法区别详解
Aug 29 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实现异步调用方法研究与分享
2011/10/27 PHP
php分页函数完整实例代码
2014/09/22 PHP
PHP微信开发用Cache 解决数据缓存
2016/07/11 PHP
php自定义函数实现统计中文字符串长度的方法小结
2017/04/15 PHP
Yii框架实现图片上传的方法详解
2017/05/20 PHP
PHP基于openssl实现的非对称加密操作示例
2019/01/11 PHP
PHP示例演示发送邮件给某个邮箱
2019/04/03 PHP
IE无法设置短域名下Cookie
2010/09/23 Javascript
jquery下为Event handler传递动态参数的代码
2011/01/06 Javascript
关于jQuery $.isNumeric vs. $.isNaN vs. isNaN
2013/04/15 Javascript
解决jquery中美元符号命名冲突问题
2014/01/08 Javascript
浅析jQuery(function(){})与(function(){})(jQuery)之间的区别
2014/01/09 Javascript
javascript if条件判断方法小结
2014/05/17 Javascript
js传值后台中文出现乱码的解决方法
2016/06/30 Javascript
Bootstrap Table的使用总结
2016/10/08 Javascript
JavaScript 深层克隆对象详解及实例
2016/11/03 Javascript
jQuery简介_动力节点Java学院整理
2017/07/04 jQuery
JavaScript实现三级联动效果
2017/07/15 Javascript
Spring Boot/VUE中路由传递参数的实现代码
2018/03/02 Javascript
浅谈如何通过node.js对数据进行MD5加密
2018/05/16 Javascript
Python 检查数组元素是否存在类似PHP isset()方法
2014/10/14 Python
python使用wmi模块获取windows下的系统信息 监控系统
2015/10/27 Python
Python中使用插入排序算法的简单分析与代码示例
2016/05/04 Python
python读写csv文件实例代码
2019/07/05 Python
在OpenCV里实现条码区域识别的方法示例
2019/12/04 Python
Tensorflow Summary用法学习笔记
2020/01/10 Python
python数据预处理方式 :数据降维
2020/02/24 Python
Python使用Paramiko控制liunx第三方库
2020/05/20 Python
Pycharm新手使用教程(图文详解)
2020/09/17 Python
用python实现一个简单计算器(完整DEMO)
2020/10/14 Python
文明学生标兵事迹
2014/01/21 职场文书
大学自主招生推荐信
2014/05/10 职场文书
建筑节能汇报材料
2014/08/22 职场文书
2015年项目工作总结
2015/04/29 职场文书
文化苦旅读书笔记
2015/06/29 职场文书
深入解析Apache Hudi内核文件标记机制
2022/03/31 Servers