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 相关文章推荐
phpmyadmin操作流程
Oct 09 PHP
php switch语句多个值匹配同一代码块的实现
Mar 03 PHP
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
Jun 23 PHP
Laravel框架中扩展函数、扩展自定义类的方法
Sep 04 PHP
php实现ip白名单黑名单功能
Mar 12 PHP
PHP使用内置dir类实现目录遍历删除
Mar 31 PHP
Zend Framework教程之Loader以及PluginLoader用法详解
Mar 09 PHP
记录一次排查PHP脚本执行卡住的问题
Dec 27 PHP
php实现PDO中捕获SQL语句错误的方法
Feb 16 PHP
thinkPHP5.0框架整体架构总览【应用,模块,MVC,驱动,行为,命名空间等】
Mar 25 PHP
php微信开发之图片回复功能
Jun 14 PHP
PHP获取当前时间不准确问题解决方案
Aug 14 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
日本因肺炎疫情影响,这几部动漫推延播放!
2020/03/03 日漫
php curl请求信息和返回信息设置代码实例
2015/04/27 PHP
CI框架简单邮件发送类实例
2016/05/18 PHP
PHP简单预防sql注入的方法
2016/09/27 PHP
PHP基于递归实现的约瑟夫环算法示例
2017/08/27 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
JavaScript ( (__ = !$ + $)[+$] + ({} + $)[_/_] +({} + $)[_/_] )
2011/02/25 Javascript
js、css、img等浏览器缓存问题的2种解决方案
2013/10/23 Javascript
JavaScript字符串对象replace方法实例(用于字符串替换或正则替换)
2014/10/16 Javascript
javascript搜索框效果实现方法
2015/05/14 Javascript
jQuery中 prop() attr()使用详解
2015/05/19 Javascript
基于CSS3和jQuery实现跟随鼠标方位的Hover特效
2016/07/25 Javascript
你不知道的 javascript【推荐】
2017/01/08 Javascript
JavaScript简单验证表单空值及邮箱格式的方法
2017/01/20 Javascript
TableSort.js表格排序插件使用方法详解
2017/02/10 Javascript
vue中如何引入jQuery和Bootstrap
2017/04/10 jQuery
JS去掉字符串前后空格、阻止表单提交的实现代码
2017/06/08 Javascript
详解vue组件通信的三种方式
2017/06/30 Javascript
vue如何使用 Slot 分发内容实例详解
2017/09/05 Javascript
Bootstrap Tooltip显示换行和左对齐的解决方案
2017/10/11 Javascript
vue-mugen-scroll组件实现pc端滚动刷新
2019/08/16 Javascript
python 循环遍历字典元素的简单方法
2016/09/11 Python
pytorch三层全连接层实现手写字母识别方式
2020/01/14 Python
html5构建触屏网站之网站尺寸探讨
2013/01/07 HTML / CSS
世界上最受欢迎的钓鱼诱饵:Rapala
2019/05/02 全球购物
"火柴棍式"程序员面试题
2014/03/16 面试题
Prototype中如何为一个元素添加一个方法
2014/12/08 面试题
安康杯竞赛活动总结
2014/05/05 职场文书
商务英语专业求职信
2014/06/26 职场文书
2016自主招生教师推荐信范文
2015/03/23 职场文书
2015秋季开学典礼演讲稿
2015/07/16 职场文书
社区低保工作总结2015
2015/07/23 职场文书
2015领导干部廉洁自律工作总结
2015/07/23 职场文书
竞聘演讲报告:基本写作有哪些?附开头范文
2019/10/16 职场文书
ROS系统将python包编译为可执行文件的简单步骤
2021/07/25 Python
vue数据字典取键值项目的字典问题
2022/04/12 Vue.js