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 相关文章推荐
我的论坛源代码(七)
Oct 09 PHP
ThinkPHP 防止表单重复提交的方法
Aug 08 PHP
PHP 简易输出CSV表格文件的方法详解
Jun 20 PHP
php多种形式发送邮件(mail qmail邮件系统 phpmailer类)
Jan 22 PHP
PHP中substr()与explode()函数用法分析
Nov 24 PHP
PHP中SimpleXML函数用法分析
Nov 26 PHP
phpmyadmin提示The mbstring extension is missing的解决方法
Dec 17 PHP
PHP 配置后台登录以及模板引入
Jan 24 PHP
php 使用curl模拟ip和来源进行访问的实现方法
May 02 PHP
利用PHP获取访客IP、地区位置、浏览器及来源页面等信息
Jun 27 PHP
PHP面向对象程序设计子类扩展父类(子类重新载入父类)操作详解
Jun 14 PHP
PHP实现抽奖功能实例代码
Jun 30 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版微信公众平台红包API
2015/04/02 PHP
Yii CGridView用法实例详解
2016/07/12 PHP
thinkphp自定义权限管理之名称判断方法
2017/04/01 PHP
JQuery入门——用映射方式绑定不同事件应用示例
2013/02/05 Javascript
JS中showModalDialog 的使用解析
2013/04/17 Javascript
jquery滚动条插件jScrollPane的使用介绍
2013/11/08 Javascript
零基础搭建Node.js、Express、Ejs、Mongodb服务器及应用开发入门
2014/12/20 Javascript
javascript字符串替换函数如何一次性全部替换掉
2015/10/30 Javascript
深入剖析JavaScript中的函数currying柯里化
2016/04/29 Javascript
JavaScript中offsetWidth的bug及解决方法
2017/05/17 Javascript
详解vue-cli脚手架中webpack配置方法
2018/08/22 Javascript
node错误处理与日志记录的实现
2018/12/24 Javascript
详解Vue中组件的缓存
2019/04/20 Javascript
Vue scrollBehavior 滚动行为实现后退页面显示在上次浏览的位置
2019/05/27 Javascript
javascript实现前端分页效果
2020/06/24 Javascript
解决idea开发遇到javascript动态添加html元素时中文乱码的问题
2020/09/29 Javascript
一文秒懂nodejs中的异步编程
2021/01/28 NodeJs
python使用socket远程连接错误处理方法
2015/04/29 Python
python selenium UI自动化解决验证码的4种方法
2018/01/05 Python
python如何让类支持比较运算
2018/03/20 Python
对python程序内存泄漏调试的记录
2018/06/11 Python
Django中的forms组件实例详解
2018/11/08 Python
Django渲染Markdown文章目录的方法示例
2019/01/02 Python
Python tkinter之ComboBox(下拉框)的使用简介
2021/02/05 Python
如何拷贝一整个Java对象,包括它的状态
2013/12/27 面试题
社会学专业求职信
2014/02/24 职场文书
开工典礼策划方案
2014/05/23 职场文书
学校领导班子对照检查材料
2014/08/28 职场文书
乡镇组织委员个人整改措施
2014/09/16 职场文书
技术股份合作协议书
2014/10/05 职场文书
大学生党员自我批评思想汇报
2014/10/10 职场文书
出生公证书
2015/01/23 职场文书
大学四年个人总结
2015/03/03 职场文书
商场营业员岗位职责
2015/04/14 职场文书
英语通知范文
2015/04/22 职场文书
PyTorch device与cuda.device用法
2022/04/03 Python