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
数字转英文
Dec 06 PHP
mysql 搜索之简单应用
Apr 27 PHP
PHP中的extract的作用分析
Apr 09 PHP
实测在class的function中include的文件中非php的global全局环境
Jul 15 PHP
php中的常用魔术方法总结
Aug 02 PHP
YII模块实现绑定二级域名的方法
Jul 09 PHP
PHP跨平台获取服务器IP地址自定义函数分享
Dec 29 PHP
PHP 访问数据库配置通用方法(json)
May 20 PHP
Laravel利用gulp如何构建前端资源详解
Jun 03 PHP
PHP设计模式入门之状态模式原理与实现方法分析
Apr 26 PHP
PHP $O00OO0=urldecode &amp; eval 解密,记一次商业源码的去后门
Sep 13 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筛选不存在的图片资源
2015/04/28 PHP
PHP递归遍历指定文件夹内的文件实现方法
2016/11/15 PHP
php 访问oracle 存储过程实例详解
2017/01/08 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
2018/02/11 PHP
经常用的图片在容器中的水平垂直居中实例
2007/06/10 Javascript
JavaScript中的值类型转换介绍
2014/12/31 Javascript
原生JS和JQuery动态添加、删除表格行的方法
2015/05/28 Javascript
简介JavaScript中substring()方法的使用
2015/06/06 Javascript
Nodejs进阶:如何将图片转成datauri嵌入到网页中去实例
2016/11/21 NodeJs
jQuery实现导航回弹效果
2017/02/27 Javascript
JS实现求数组起始项到终止项之和的方法【基于数组扩展函数】
2017/06/13 Javascript
bootstrap paginator分页前后台用法示例
2017/06/17 Javascript
js中的闭包学习心得
2018/02/06 Javascript
vue项目中实现图片预览的公用组件功能
2018/10/26 Javascript
jQuery Datatables 动态列+跨列合并实现代码
2020/01/30 jQuery
微信小程序12行js代码自己写个滑块功能(推荐)
2020/07/15 Javascript
swiperjs实现导航与tab页的联动
2020/12/13 Javascript
[07:57]2018DOTA2国际邀请赛寻真——PSG.LGD凤凰浴火
2018/08/12 DOTA
python中将阿拉伯数字转换成中文的实现代码
2011/05/19 Python
编写Python CGI脚本的教程
2015/06/29 Python
python3中int(整型)的使用教程
2017/03/23 Python
python实现飞机大战微信小游戏
2020/03/21 Python
Python 通过打码平台实现验证码的实现
2019/05/13 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
2019/08/23 Python
浅谈Python3 numpy.ptp()最大值与最小值的差
2019/08/24 Python
python飞机大战 pygame游戏创建快速入门详解
2019/12/17 Python
django迁移文件migrations的实现
2020/03/31 Python
CSS3 仿微信聊天小气泡实例代码
2017/04/05 HTML / CSS
六查六看自查材料
2014/02/17 职场文书
马智宇婚礼主持词
2014/03/22 职场文书
酒店爱岗敬业演讲稿
2014/09/02 职场文书
会议欢迎词
2015/01/23 职场文书
2015年毕业生实习评语
2015/03/25 职场文书
导游词之蓬莱长岛
2019/12/17 职场文书
mysql批量新增和存储的方法实例
2021/04/07 MySQL
Python爬虫入门案例之回车桌面壁纸网美女图片采集
2021/10/16 Python