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网站在线人数统计
Apr 09 PHP
修改Zend引擎实现PHP源码加密的原理及实践
Apr 14 PHP
PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
Dec 10 PHP
浅析PHP递归函数返回值使用方法
Feb 18 PHP
基于curl数据采集之单页面并行采集函数get_htmls的使用
Apr 28 PHP
php比较两个绝对时间的大小
Jan 31 PHP
PHP邮件发送类PHPMailer用法实例详解
Sep 22 PHP
解决nginx不支持thinkphp中pathinfo的问题
Jul 21 PHP
PHP curl模拟登录带验证码的网站
Nov 30 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
Sep 11 PHP
yii2项目实战之restful api授权验证详解
May 20 PHP
PHP合并两个或多个数组的方法
Jan 20 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
1.PHP简介
2006/10/09 PHP
ThinkPHP中create()方法自动验证表单信息
2017/04/28 PHP
利用Laravel生成Gravatar头像地址的优雅方法
2017/12/30 PHP
JScript的条件编译
2007/05/29 Javascript
基于jquery的鼠标拖动效果代码
2012/05/30 Javascript
在新窗口打开超链接的方法小结
2013/04/14 Javascript
jQuery实现鼠标滑过遮罩并高亮显示效果
2013/07/16 Javascript
JS页面延迟执行一些方法(整理)
2013/11/11 Javascript
jQuery淡入淡出元素让其效果更为生动
2014/09/01 Javascript
JQuery移动页面开发之屏幕方向改变与滚屏的实现
2015/12/03 Javascript
JS结合bootstrap实现基本的增删改查功能
2016/07/22 Javascript
基于AngularJS实现表单验证功能
2017/07/28 Javascript
JS库之Particles.js中文开发手册及参数详解
2017/09/13 Javascript
浅谈Angular文字折叠展开组件的原理分析
2017/11/24 Javascript
Vue实现按钮旋转和移动位置的实例代码
2018/08/09 Javascript
js脚本中执行java后台代码方法解析
2019/10/11 Javascript
vue-router为激活的路由设置样式操作
2020/07/18 Javascript
JS数组转字符串实现方法解析
2020/09/04 Javascript
小程序实现密码输入框
2020/11/16 Javascript
react中hook介绍以及使用教程
2020/12/11 Javascript
[01:02:03]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS VG
2014/05/26 DOTA
Python中装饰器兼容加括号和不加括号的写法详解
2017/07/05 Python
深入分析python数据挖掘 Json结构分析
2018/04/21 Python
python获取中文字符串长度的方法
2018/11/14 Python
Python设计模式之命令模式原理与用法实例分析
2019/01/11 Python
python打开windows应用程序的实例
2019/06/28 Python
np.newaxis 实现为 numpy.ndarray(多维数组)增加一个轴
2019/11/30 Python
Pytorch 实现数据集自定义读取
2020/01/18 Python
Python打印特殊符号及对应编码解析
2020/05/07 Python
用CSS3实现背景渐变的方法
2015/07/14 HTML / CSS
The Body Shop美体小铺西班牙官网:天然化妆品
2019/06/21 全球购物
应届生求职推荐信
2013/10/28 职场文书
财务支持类个人的自我评价
2014/02/14 职场文书
统计专业自荐书
2014/07/06 职场文书
JavaScript 事件捕获冒泡与捕获详情
2021/11/11 Javascript
【海涛dota解说】海涛小满开黑4v5被破两路翻盘潮汐第一视角解说
2022/04/01 DOTA