php基础知识:类与对象(4) 范围解析操作符(::)


Posted in PHP onDecember 13, 2006

范围解析操作符(也可称作 Paamayim Nekudotayim)或者更简单地说是一对冒号,可以用于访问静态成员、方法和常量,还可以用于访问被覆盖类中的成员和方法。 
当在类的外部访问这些静态成员、方法和常量时,必须使用类的名字。
把 Paamayim Nekudotayim 在希伯莱文就是双冒号的意思。 

在类的外部使用 :: 操作符
class MyClass {
   const CONST_VALUE = 'A constant value';
}

echo MyClass::CONST_VALUE;

self 和 parent 这两个特殊的关键字是用于在类的内部对成员或方法进行访问的。 

例子:
class OtherClass extends MyClass
{
   public static $my_static = 'static var';

   public static function doubleColon() {
       echo parent::CONST_VALUE . " n";
       echo self::$my_static . " n";
   }
}
OtherClass::doubleColon();

当一个子类覆盖其父类中的方法时,PHP 不会再执行父类中已被覆盖的方法,直到子类中调用这些方法为止。(是不是废话?不是,这是PHP与其他主流语言的一点区别)。这种机制也作用于构造函数和析构函数、重载及魔术函数。 

class MyClass
{
   protected function myFunc() {
       echo "MyClass::myFunc() n";
   }
}

class OtherClass extends MyClass
{
   // 覆盖父类中的方法
   public function myFunc()
   {
       // 但仍然可以调用已被覆盖的方法
       parent::myFunc();
       echo "OtherClass::myFunc() n";
   }
}

$class = new OtherClass();
$class->myFunc();

--------------------------------------------------------------------------------
??重点??访问静态方法或者成员时一定要使用类名::的方式。
另外就是注意:PHP不会主动调用父类的方法,包括构造函数和析构函数在内。
参见这个文字:http://163xiaofan.blog.163.com/blog/static/1713578020061027101820973 

PHP 相关文章推荐
一些PHP写的小东西
Dec 06 PHP
PHP中=赋值操作符对不同数据类型的不同行为
Jan 02 PHP
PHP中如何调用webservice的实例参考
Apr 25 PHP
php对csv文件的读取,写入,输出下载操作详解
Aug 10 PHP
PHP数组操作――获取数组最后一个值的方法
Apr 14 PHP
利用PHP绘图函数实现简单验证码功能的方法
Oct 18 PHP
通过chrome浏览器控制台(Console)进行PHP Debug的方法
Oct 19 PHP
PHP实现的简单排列组合算法应用示例
Jun 20 PHP
php中输出json对象的值(实现方法)
Mar 07 PHP
php防止表单重复提交实例讲解
Feb 11 PHP
基于php伪静态的实现方法解析
Jul 31 PHP
详解phpstorm2020最新破解方法
Sep 17 PHP
php基础知识:类与对象(3) 构造函数和析构函数
Dec 13 #PHP
php基础知识:类与对象(2) 自动加载对象
Dec 13 #PHP
php基础知识:类与对象(1)
Dec 13 #PHP
php基础知识:函数基础知识
Dec 13 #PHP
php基础知识:控制结构
Dec 13 #PHP
《PHP边学边教》(04.编写简易的通讯录――视频教程1)
Dec 13 #PHP
IIS+PHP+MySQL+Zend配置 (视频教程)
Dec 13 #PHP
You might like
杏林同学录(三)
2006/10/09 PHP
PHP中array_map与array_column之间的关系分析
2014/08/19 PHP
PHP原生函数一定好吗?
2014/12/08 PHP
完整删除ecshop中获取店铺信息的API
2014/12/24 PHP
smarty内置函数section的用法
2015/01/22 PHP
Laravel中使用自己编写类库的3种方法
2015/02/10 PHP
基于jquery的一个简单的脚本验证插件
2010/04/05 Javascript
让mayfish支持mysqli数据库驱动的实现方法
2010/05/22 Javascript
JavaScript高级程序设计 阅读笔记(十四) js继承机制的实现
2012/08/14 Javascript
javascript闭包传参和事件的循环绑定示例探讨
2014/04/17 Javascript
jquery序列化表单以及回调函数的使用示例
2014/07/02 Javascript
JavaScript中发布/订阅模式的简单实例
2014/11/05 Javascript
JavaScript获得指定对象大小的方法
2015/07/01 Javascript
jquery实现点击变换导航样式的方法
2015/08/31 Javascript
JavaScript判断浏览器对CSS3属性是否支持的多种方法
2016/11/13 Javascript
微信小程序 获取javascript 里的数据
2017/08/17 Javascript
nodejs初始化init的示例代码
2018/10/10 NodeJs
javascript事件监听与事件委托实例详解
2019/08/16 Javascript
微信js-sdk 录音功能的示例代码
2019/11/01 Javascript
Vue看了就会的8个小技巧
2021/01/21 Vue.js
使用wxpython实现的一个简单图片浏览器实例
2014/07/10 Python
简介Python中用于处理字符串的center()方法
2015/05/18 Python
MySQL中表的复制以及大型数据表的备份教程
2015/11/25 Python
Python3字符串encode与decode的讲解
2019/04/02 Python
python构造函数init实例方法解析
2020/01/19 Python
解决Jupyter Notebook使用parser.parse_args出现错误问题
2020/04/20 Python
在HTML5中使用MathML数学公式的简单讲解
2016/02/19 HTML / CSS
介绍一下Ruby的特点
2013/01/20 面试题
如何填写个人简历自我评价
2013/12/10 职场文书
525心理活动总结
2014/07/04 职场文书
生物学专业求职信
2014/07/23 职场文书
改革共识倡议书
2014/08/29 职场文书
口才训练演讲稿范文
2014/09/16 职场文书
学校节水倡议书
2015/04/29 职场文书
2015年加油站站长工作总结
2015/05/27 职场文书
《草虫的村落》教学反思
2016/02/20 职场文书