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 相关文章推荐
PHP4之真OO
Oct 09 PHP
BBS(php & mysql)完整版(四)
Oct 09 PHP
php继承的一个应用
Sep 06 PHP
Apache下禁止php文件被直接访问的解决方案
Apr 25 PHP
一些php项目中比较通用的php自建函数的详解
Jun 06 PHP
解析php中array_merge与array+array的区别
Jun 21 PHP
PHP、Nginx、Apache中禁止网页被iframe引用的方法
Oct 01 PHP
PHP之sprintf函数用法详解
Nov 12 PHP
php中使用in_array() foreach array_search() 查找数组是否包含时的性能对比
Apr 14 PHP
php实现二进制和文本相互转换的方法
Apr 18 PHP
正确的PHP匹配UTF-8中文的正则表达式
May 13 PHP
PHP使用 Pear 进行安装和卸载包的方法详解
Jul 08 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
php在线打包程序源码
2008/07/27 PHP
ThinkPHP CURD方法之field方法详解
2014/06/18 PHP
PHP经典面试题之设计模式(经常遇到)
2015/10/15 PHP
php微信开发自定义菜单
2016/08/27 PHP
php反射学习之依赖注入示例
2019/06/14 PHP
Laravel框架控制器,视图及模型操作图文详解
2019/12/04 PHP
学习ExtJS border布局
2009/10/08 Javascript
动态载入/删除/更新外部 JavaScript/Css 文件的代码
2010/07/03 Javascript
超酷的网页音乐播放器DewPlayer使用方法
2010/12/18 Javascript
jquery引用方法时传递参数原理分析
2014/10/13 Javascript
js表头排序实现方法
2015/01/16 Javascript
Javascript基础教程之数据类型 (数值 Number)
2015/01/18 Javascript
js的各种排序算法实现(总结)
2016/07/23 Javascript
Bootstrap popover用法详解
2016/12/22 Javascript
Java与JavaScript中判断两字符串是否相等的区别
2017/03/13 Javascript
Vue+ElementUI实现表单动态渲染、可视化配置的方法
2018/03/07 Javascript
浅析Vue实例以及生命周期
2018/08/14 Javascript
jQuery插件simplePagination的使用方法示例
2020/04/28 jQuery
python使用os模块的os.walk遍历文件夹示例
2014/01/27 Python
python入门基础之用户输入与模块初认识
2016/11/14 Python
python使用mysql的两种使用方式
2018/03/07 Python
transform python环境快速配置方法
2018/09/27 Python
python实现flappy bird游戏
2018/12/24 Python
python ipset管理 增删白名单的方法
2019/01/14 Python
Python3并发写文件与Python对比
2019/11/20 Python
pycharm运行scrapy过程图解
2019/11/22 Python
css3实现动画的三种方式
2020/08/24 HTML / CSS
巴西箱包、背包、钱包和旅行配件购物网站:Inovathi
2019/12/14 全球购物
大学生护理专业自荐信
2013/10/03 职场文书
优秀员工年终发言演讲稿
2014/01/01 职场文书
浪费资源的建议书
2014/03/12 职场文书
规划编制实施方案
2014/03/15 职场文书
毕业生求职信范文
2014/06/29 职场文书
2015年环保局工作总结
2015/05/22 职场文书
Python+Matplotlib+LaTeX玩转数学公式
2022/02/24 Python
oracle delete误删除表数据后如何恢复
2022/06/28 Oracle