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 相关文章推荐
获得Google PR值的PHP代码
Jan 28 PHP
php+mysql分页代码详解
Mar 27 PHP
PHP删除数组中空值的方法介绍
Apr 14 PHP
PHP图像处理之使用imagecolorallocate()函数设置颜色例子
Nov 19 PHP
ThinkPHP中I(),U(),$this-&gt;post()等函数用法
Nov 22 PHP
几个实用的PHP内置函数使用指南
Nov 27 PHP
php使用GD库创建图片缩略图的方法
Jun 10 PHP
Java中final关键字详解
Aug 10 PHP
基于PHP微信红包的算法探讨
Jul 21 PHP
PHP去除字符串最后一个字符的三种方法实例
Mar 01 PHP
visual studio code 调试php方法(图文详解)
Sep 15 PHP
Laravel框架路由设置与使用示例
Jun 12 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 flock 文件锁详细介绍
2012/12/29 PHP
PHP实现事件机制的方法
2015/07/10 PHP
用php代码限制国内IP访问我们网站
2015/09/26 PHP
jQuery find和children方法使用
2011/01/31 Javascript
如何使Chrome控制台支持多行js模式——意外发现
2013/06/13 Javascript
微信分享的标题、缩略图、连接及描述设置方法
2014/10/14 Javascript
nodejs中使用多线程编程的方法实例
2015/03/24 NodeJs
jQuery实现购物车计算价格功能的方法
2015/03/25 Javascript
浅析Node.js中的内存泄漏问题
2015/06/23 Javascript
javascript常用经典算法详解
2017/01/11 Javascript
Node.js 使用递归实现遍历文件夹中所有文件
2017/09/18 Javascript
微信小程序实现页面跳转传值的方法
2017/10/12 Javascript
vue watch深度监听对象实现数据联动效果
2018/08/16 Javascript
Vuex 单状态库与多模块状态库详解
2018/12/11 Javascript
js实现圆形显示鼠标单击位置
2020/02/11 Javascript
微信小程序实现抖音播放效果的实例代码
2020/04/11 Javascript
Python3学习urllib的使用方法示例
2017/11/29 Python
Python获取当前公网ip并自动断开宽带连接实例代码
2018/01/12 Python
CentOS7下python3.7.0安装教程
2018/07/30 Python
Python面向对象之Web静态服务器
2019/09/03 Python
opencv-python 读取图像并转换颜色空间实例
2019/12/09 Python
Python爬取腾讯视频评论的思路详解
2019/12/19 Python
解决Python3.8运行tornado项目报NotImplementedError错误
2020/09/02 Python
Python 使用SFTP和FTP实现对服务器的文件下载功能
2020/12/17 Python
html标签之Object和EMBED标签详解
2013/07/04 HTML / CSS
美国最大的船只买卖在线市场:Boat Trader
2018/08/04 全球购物
请写出一段Python代码实现删除一个list里面的重复元素
2015/12/29 面试题
英文自荐信
2013/12/15 职场文书
培训心得体会
2013/12/29 职场文书
水污染治理工程专业求职信
2014/06/14 职场文书
2014年学校体育工作总结
2014/12/08 职场文书
护士个人年终总结
2015/02/13 职场文书
行政答辩状范文
2015/05/21 职场文书
中国梦党课学习心得体会
2016/01/05 职场文书
电工实训心得体会
2016/01/14 职场文书
教你使用Python pypinyin库实现汉字转拼音
2021/05/27 Python