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 分页类(模仿google)-面试题目解答
Sep 13 PHP
破解图片防盗链的代码(asp/php)测试通过
Jul 02 PHP
php设计模式 Bridge (桥接模式)
Jun 26 PHP
php中比较简单的导入phpmyadmin生成的sql文件的方法
Jun 28 PHP
PHP高手需要要掌握的知识点
Aug 21 PHP
CI框架安全类Security.php源码分析
Nov 04 PHP
PHP使用stream_context_create()模拟POST/GET请求的方法
Apr 02 PHP
PHP基于反射机制实现插件的可插拔设计详解
Nov 10 PHP
PHP和MYSQL实现分页导航思路详解
Apr 11 PHP
老生常谈PHP面向对象之解释器模式
May 17 PHP
Yii 2.0自带的验证码使用经验分享
Jun 19 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
从零开始的异世界生活:第二季延期后,B站上架了第二部剧场版
2020/05/06 日漫
中国第一家无线电行
2021/03/01 无线电
浅析SVN常见问题及解决方法
2013/06/21 PHP
PHP学习笔记之字符串编码的转换和判断
2014/05/22 PHP
php修改指定文件后缀的方法
2014/09/11 PHP
php创建图像具体步骤
2017/03/13 PHP
PHP操作XML中XPath的应用示例
2019/07/04 PHP
javascript显示用户停留时间的简单实例
2013/08/05 Javascript
IE浏览器不支持getElementsByClassName的解决方法
2014/08/27 Javascript
jquery实现简单手风琴菜单效果实例
2015/06/13 Javascript
javascript 广告移动特效的实现代码
2016/06/25 Javascript
Vue.js实现一个漂亮、灵活、可复用的提示组件示例
2017/03/17 Javascript
从Vuex中取出数组赋值给新的数组,新数组push时报错的解决方法
2018/09/18 Javascript
Angular8 Http拦截器简单使用教程
2019/08/20 Javascript
解决VUE mounted 钩子函数执行时 img 未加载导致页面布局的问题
2020/07/27 Javascript
Python简单计算文件夹大小的方法
2015/07/14 Python
python join方法使用详解
2019/07/30 Python
python 接口实现 供第三方调用的例子
2019/08/13 Python
python实现用户名密码校验
2020/03/18 Python
Sentry错误日志监控使用方法解析
2020/11/12 Python
使用Python爬取小姐姐图片(beautifulsoup法)
2021/02/11 Python
css3 仿写阿里云水纹效果的示例代码
2018/02/10 HTML / CSS
前端canvas水印快速制作(附完整代码)
2019/09/19 HTML / CSS
使用html5 canvas绘制圆环动效
2019/06/03 HTML / CSS
澳大利亚时尚前卫设计师珠宝在线:Amber Sceats
2017/10/04 全球购物
澳洲在线厨具商店:Kitchen Style
2018/05/05 全球购物
中国领先的汽车保养服务平台:途虎养车
2019/10/18 全球购物
生产车间实习自我鉴定
2013/09/23 职场文书
2014年社区学雷锋活动总结
2014/03/09 职场文书
小班开学寄语
2014/04/04 职场文书
离婚协议书范本及离婚须知
2014/10/15 职场文书
安娜卡列尼娜观后感
2015/06/11 职场文书
中国式结婚:司仪主持词(范文)
2019/07/25 职场文书
话题作文之生命的旋律
2019/12/17 职场文书
Python趣味挑战之实现简易版音乐播放器
2021/05/28 Python
css3 选择器
2022/05/11 HTML / CSS