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桌面中心(三) 修改数据库
Mar 11 PHP
解析php取整的几种方式
Jun 25 PHP
PHP四舍五入精确小数位及取整
Jan 14 PHP
php中\r \r\n \t的区别示例介绍
Feb 08 PHP
Thinkphp中volist标签mod控制一定记录的换行BUG解决方法
Nov 04 PHP
PHP使用memcache缓存技术提高响应速度的方法
Dec 26 PHP
jquery获取多个checkbox的值异步提交给php的方法
Jun 24 PHP
PHPStrom中实用的功能和快捷键大全
Sep 23 PHP
在WordPress中获取数据库字段内容和添加主题设置菜单
Jan 11 PHP
解决安装WampServer时提示缺少msvcr110.dll文件的问题
Jul 09 PHP
php使用flock阻塞写入文件和非阻塞写入文件的实例讲解
Jul 10 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
Sep 22 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
深入HTTP响应状态码速查表的详解
2013/06/07 PHP
Laravel搭建后台登录系统步骤详解
2016/07/26 PHP
JavaScript Prototype对象
2009/01/07 Javascript
javascript arguments 传递给函数的隐含参数
2009/08/21 Javascript
dtree 网页树状菜单及传递对象集合到js内,动态生成节点
2012/04/14 Javascript
NODE.JS加密模块CRYPTO常用方法介绍
2014/06/05 Javascript
Javascript基础教程之argument 详解
2015/01/18 Javascript
学习JavaScript设计模式之迭代器模式
2016/01/19 Javascript
jQuery实现只允许输入数字和小数点的方法
2016/03/02 Javascript
JavaScript简单计算人的年龄示例
2017/04/15 Javascript
详解Node.js中exports和module.exports的区别
2017/04/19 Javascript
js字符串与Unicode编码互相转换
2017/05/17 Javascript
vue小白入门教程
2018/04/02 Javascript
关于vue编译版本引入的问题的解决
2018/09/17 Javascript
关于微信小程序map组件z-index的层级问题分析
2019/07/09 Javascript
extjs图形绘制之饼图实现方法分析
2020/03/06 Javascript
[08:44]和酒神一起战斗 DOTA2教你做大人
2014/03/27 DOTA
Python 中的with关键字使用详解
2016/09/11 Python
关于反爬虫的一些简单总结
2017/12/13 Python
一篇文章快速了解Python的GIL
2018/01/12 Python
Python基础之函数的定义与使用示例
2019/03/23 Python
python模块常用用法实例详解
2019/10/17 Python
Python3基于print打印带颜色字符串
2020/07/06 Python
让ie浏览器成为支持html5的浏览器的解决方法(使用html5shiv)
2014/04/08 HTML / CSS
Chemist Warehouse官方海外旗舰店:澳洲第一连锁大药房
2017/08/25 全球购物
ONLY瑞典官网:世界知名服装品牌
2018/06/19 全球购物
EJB的角色和三个对象
2015/12/31 面试题
外语专业毕业生自我评价分享
2013/10/05 职场文书
HR喜欢的自荐信格式
2013/10/08 职场文书
公司行政经理岗位职责
2013/12/24 职场文书
酒店员工职业生涯规划
2014/02/25 职场文书
毕业生写求职信的要点
2014/03/04 职场文书
2014年煤矿工人工作总结
2014/12/08 职场文书
公务员政审个人总结
2015/02/12 职场文书
2015年药品销售工作总结范文
2015/05/25 职场文书
2016年公司中秋节致辞
2015/11/26 职场文书