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木马攻击防御之道
Mar 24 PHP
PHP5+UTF8多文件上传类
Oct 17 PHP
php session 错误
May 21 PHP
PHP5 字符串处理函数大全
Mar 23 PHP
Drupal 添加模块出现莫名其妙的错误的解决方法(往往出现在模块较多时)
Apr 18 PHP
PHP循环函数使用介绍之PHP基础入门教程
Sep 21 PHP
PHP查找数值数组中不重复最大和最小的10个数的方法
Apr 20 PHP
利用PHP如何实现Socket服务器
Sep 23 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
May 13 PHP
php版微信支付api.mch.weixin.qq.com域名解析慢原因与解决方法
Oct 12 PHP
Laravel中validation验证 返回中文提示 全局设置的方法
Sep 29 PHP
laravel 解决强制跳转 https的问题
Oct 22 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 面向对象详解
2012/09/13 PHP
php实现格式化多行文本为Js可用格式
2015/04/15 PHP
PHP函数nl2br()与自定义函数nl2p()换行用法分析
2016/04/02 PHP
PHP简单数据库操作类实例【支持增删改查及链式操作】
2016/10/10 PHP
php+ajax无刷新上传图片的实现方法
2016/12/06 PHP
使用php完成常见的文件上传功能(推荐)
2017/01/13 PHP
php中输出json对象的值(实现方法)
2018/03/07 PHP
PHP的RSA加密解密方法以及开发接口使用
2018/02/11 PHP
解决使用attachEvent函数时,this指向被绑定的元素的问题的方法
2007/08/13 Javascript
Jsonp 跨域的原理以及Jquery的解决方案
2010/05/18 Javascript
20款效果非常棒的 jQuery 插件小结分享
2011/11/18 Javascript
ExtJS DOM元素操作经验分享
2013/08/28 Javascript
JS实现简易图片轮播效果的方法
2015/03/25 Javascript
html+js+highcharts绘制圆饼图表的简单实例
2016/08/04 Javascript
jquery判断页面网址是否有效的两种方法
2016/12/11 Javascript
JS滚动到指定位置导航栏固定顶部
2017/07/03 Javascript
React如何利用相对于根目录进行引用组件详解
2017/10/09 Javascript
jQuery实现轮播图及其原理详解
2020/04/12 jQuery
使用RN Animated做一个“添加购物车”动画的方法
2018/09/12 Javascript
Vue+ElementUI 中级联选择器Bug问题的解决
2020/07/31 Javascript
[42:24]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第一场 11.01
2020/11/02 DOTA
python3.5实现socket通讯示例(TCP)
2017/02/07 Python
Python中模块pymysql查询结果后如何获取字段列表
2017/06/05 Python
Django框架多表查询实例分析
2018/07/04 Python
详解Python中is和==的区别
2019/03/21 Python
python实现kmp算法的实例代码
2019/04/03 Python
python中的列表与元组的使用
2019/08/08 Python
爱尔兰电脑、家电和家具购物网站:Buy It Direct
2019/07/09 全球购物
学生会竞选自荐信
2013/10/12 职场文书
普通话宣传标语
2014/06/26 职场文书
2014入党积极分子破除“四风”思想汇报
2014/09/14 职场文书
学习退步检讨书
2014/09/28 职场文书
医院领导班子整改方案
2014/10/01 职场文书
在职证明范本
2015/06/15 职场文书
python3 sqlite3限制条件查询的操作
2021/04/07 Python
SQL SERVER触发器详解
2022/02/24 SQL Server