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环境搭建最新方法
Sep 05 PHP
BBS(php & mysql)完整版(三)
Oct 09 PHP
动态新闻发布的实现及其技巧
Oct 09 PHP
不用数据库的多用户文件自由上传投票系统(1)
Oct 09 PHP
解决php中Cannot send session cache limiter 的问题的方法
Apr 27 PHP
php GD绘制24小时柱状图
Jun 28 PHP
php最简单的删除目录与文件实现方法
Nov 28 PHP
PHP静态文件生成类实例
Nov 29 PHP
PHP中如何判断exec函数执行成功?
Aug 04 PHP
php中时间函数date及常用的时间计算
May 12 PHP
PHP+Redis 消息队列 实现高并发下注册人数统计的实例
Jan 29 PHP
thinkPHP框架动态配置用法实例分析
Jun 14 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
连接到txt文本的超链接,不直接打开而是点击后下载的处理方法
2009/07/01 PHP
彻底杜绝PHP的session cookie错误
2009/08/09 PHP
php自定义函数call_user_func和call_user_func_array详解
2011/07/14 PHP
解决File size limit exceeded 错误的方法
2013/06/14 PHP
PHP文件上传主要代码讲解
2013/09/30 PHP
php生成zip文件类实例
2015/04/07 PHP
php文件读取方法实例分析
2015/06/20 PHP
PHP中foreach()用法汇总
2015/07/02 PHP
PHP实现将标点符号正则替换为空格的方法
2017/08/09 PHP
PHP7如何开启Opcode打造强悍性能详解
2018/05/11 PHP
一个简单的JS时间控件示例代码(JS时分秒时间控件)
2013/11/22 Javascript
jQuery中parents()和parent()的区别分析
2014/10/28 Javascript
jQuery+css3实现Ajax点击后动态删除功能的方法
2015/08/10 Javascript
cocos2dx骨骼动画Armature源码剖析(三)
2015/09/08 Javascript
React 子组件向父组件传值的方法
2017/07/24 Javascript
js实现鼠标跟随运动效果
2020/08/02 Javascript
node.js 核心http模块,起一个服务器,返回一个页面的实例
2017/09/11 Javascript
通过js动态创建标签,并设置属性方法
2018/02/24 Javascript
浅谈Postman解决token传参的问题
2018/03/31 Javascript
angularjs 的数据绑定实现原理
2018/07/02 Javascript
python多线程编程方式分析示例详解
2013/12/06 Python
flask入门之文件上传与邮件发送示例
2018/07/18 Python
python实现视频分帧效果
2019/05/31 Python
python命令行工具Click快速掌握
2019/07/04 Python
python GUI库图形界面开发之PyQt5拖放控件实例详解
2020/02/25 Python
Django封装交互接口代码
2020/07/12 Python
Linux内核的同步机制是什么?主要有哪几种内核锁
2013/01/03 面试题
安全教育演讲稿
2014/05/09 职场文书
工作会议方案
2014/05/21 职场文书
大班下学期幼儿评语
2014/12/30 职场文书
大雁塔导游词
2015/02/04 职场文书
学校艾滋病宣传活动总结
2015/05/09 职场文书
2016年共产党员个人承诺书
2016/03/24 职场文书
2019通用版新员工入职培训方案!
2019/07/11 职场文书
Python Parser的用法
2021/05/12 Python
总结几个非常实用的Python库
2021/06/26 Python