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 相关文章推荐
第十二节--类的自动加载
Nov 16 PHP
PHP集成FCK的函数代码
Sep 27 PHP
PHP 编写的 25个游戏脚本
May 11 PHP
献给php初学者(入门学习经验谈)
Oct 12 PHP
php生成图形(Libchart)实例
Nov 06 PHP
php截取中文字符串不乱码的方法
Dec 25 PHP
php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法
Dec 15 PHP
ThinkPHP、ZF2、Yaf、Laravel框架路由大比拼
Mar 25 PHP
php验证身份证号码正确性的函数
Jul 20 PHP
详谈PHP面向对象中常用的关键字和魔术方法
Feb 04 PHP
PHP实现唤起微信支付功能
Feb 18 PHP
thinkphp 获取控制器及控制器方法
Apr 16 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 json格式和js json格式 js跨域调用实现代码
2012/09/08 PHP
PHP中4个加速、缓存扩展的区别和选用建议
2014/03/12 PHP
php实现的漂亮分页方法
2014/04/17 PHP
PHP实现的简单三角形、矩形周长面积计算器分享
2014/11/18 PHP
php的laravel框架快速集成微信登录的方法
2016/12/12 PHP
javascript 表单验证常见正则
2009/09/28 Javascript
初试jQuery EasyUI 使用介绍
2010/04/01 Javascript
怎样在JavaScript里写一个swing把数据插入数据库
2012/12/10 Javascript
jQuery教程 $()包装函数来实现数组元素分页效果
2013/08/13 Javascript
js常用自定义公共函数汇总
2014/01/15 Javascript
jQuery 操作input中radio的技巧
2016/07/18 Javascript
浅谈Web页面向后台提交数据的方式和选择
2016/09/23 Javascript
bootstrap读书笔记之CSS组件(上)
2016/10/17 Javascript
原生JS发送异步数据请求
2017/06/08 Javascript
使用Angular CLI进行单元测试和E2E测试的方法
2018/03/24 Javascript
JavaScript模板引擎原理与用法详解
2018/12/24 Javascript
详解React中合并单元格的正确写法
2019/01/08 Javascript
从零到一详聊创建Vue工程及遇到的常见问题
2019/04/25 Javascript
手把手教你 CKEDITOR 4 实现Dialog 内嵌 IFrame操作详解
2019/06/18 Javascript
JavaScript实现4位随机验证码的生成
2021/01/28 Javascript
wxPython的安装图文教程(Windows)
2017/12/28 Python
Python爬虫的两套解析方法和四种爬虫实现过程
2018/07/20 Python
连接pandas以及数组转pandas的方法
2019/06/28 Python
python输入多行字符串的方法总结
2019/07/02 Python
Python利用for循环打印星号三角形的案例
2020/04/12 Python
python 解决函数返回return的问题
2020/12/05 Python
中国领先的专业家电网购平台:国美在线
2016/12/25 全球购物
ToysRus日本官网:玩具反斗城
2018/09/08 全球购物
帕克纽约:PARKER NY
2018/12/09 全球购物
财务工作者先进事迹材料
2014/01/17 职场文书
社区七一党员活动方案
2014/01/25 职场文书
小学生我的梦想演讲稿
2014/08/21 职场文书
2015年留守儿童工作总结
2015/05/22 职场文书
基于Go Int转string几种方式性能测试
2021/04/28 Golang
python常见的占位符总结及用法
2021/07/02 Python
Vertica集成Apache Hudi重磅使用指南
2022/03/31 Servers