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 相关文章推荐
一个多文件上传的例子(原创)
Oct 09 PHP
十天学会php之第二天
Oct 09 PHP
基于mysql的论坛(4)
Oct 09 PHP
DedeCMS 核心类TypeLink.class.php摘要笔记
Apr 07 PHP
DISCUZ在win2003环境下 Unable to access ./include/common.inc.php in... 的问题终极解决方案
Nov 21 PHP
php.ini-dist 和 php.ini-recommended 的区别介绍(方便开发与安全的朋友)
Jul 01 PHP
Windows下部署Apache+PHP+MySQL运行环境实战
Aug 31 PHP
用Php编写注册后Email激活验证的实例代码
Mar 11 PHP
PHP大转盘中奖概率算法实例
Oct 21 PHP
php+ajax无刷新上传图片实例代码
Nov 17 PHP
Linux环境下php实现给网站截图的方法
May 03 PHP
yii2缓存Caching基本用法示例
Jul 18 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
PHPShop存在多个安全漏洞
2006/10/09 PHP
php数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。
2011/11/07 PHP
php通过COM类调用组件的实现代码
2012/01/11 PHP
Symfony2联合查询实现方法
2016/03/18 PHP
PHP页面输出搜索后跳转下一页的处理方法
2016/09/30 PHP
smarty模板的使用方法实例分析
2019/09/18 PHP
Laravel服务容器绑定的几种方法总结
2020/06/14 PHP
使用Apache的rewrite
2021/03/09 Servers
filemanage功能中用到的lib.js
2007/04/08 Javascript
JavaScript的Cookies
2008/01/16 Javascript
简单的JS多重继承示例
2008/03/13 Javascript
jquery 实现上下滚动效果示例代码
2013/08/09 Javascript
JS匀速运动演示示例代码
2013/11/26 Javascript
深入学习JavaScript对象
2015/10/13 Javascript
JavaScript编写检测用户所使用的浏览器的代码示例
2016/05/05 Javascript
倾力总结40条常见的移动端Web页面问题解决方案
2016/05/24 Javascript
百度多文件异步上传控件webuploader基本用法解析
2016/11/07 Javascript
AngularJS实现路由实例
2017/02/12 Javascript
vue如何实现observer和watcher源码解析
2017/03/09 Javascript
微信小程序 获取javascript 里的数据
2017/08/17 Javascript
JavaScript引用类型之基本包装类型实例分析【Boolean、Number和String】
2018/08/09 Javascript
VUE项目中加载已保存的笔记实例方法
2019/09/14 Javascript
深入理解webpack process.env.NODE_ENV配置
2020/02/23 Javascript
python3.0 字典key排序
2008/12/24 Python
下载官网python并安装的步骤详解
2019/10/12 Python
python多线程使用方法实例详解
2019/12/30 Python
Python3 获取文件属性的方式(时间、大小等)
2020/03/12 Python
Django中日期时间型字段进行年月日时分秒分组统计
2020/11/27 Python
世界首屈一指的钓鱼用品商店:TackleDirect
2016/07/26 全球购物
Redbubble法国:由独立艺术家设计的独特产品
2019/01/08 全球购物
JAVA程序员面试题
2012/10/03 面试题
《再别康桥》教学反思
2014/02/12 职场文书
入职担保书范文
2014/05/21 职场文书
个人工作能力自我评价
2015/03/05 职场文书
python 常用的异步框架汇总整理
2021/06/18 Python
Python基本数据类型之字符串str
2021/07/21 Python