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 相关文章推荐
加速XP搜索功能堪比vista
Mar 22 PHP
php中将html中的br换行符转换为文本输入中的换行符
Mar 26 PHP
浅析Yii中使用RBAC的完全指南(用户角色权限控制)
Jun 20 PHP
PHP实现今天是星期几的几种写法
Sep 26 PHP
php密码生成类实例
Sep 24 PHP
php自定义hash函数实例
May 05 PHP
PHP的几个常用加密函数
Feb 03 PHP
Zend Framework教程之响应对象的封装Zend_Controller_Response实例详解
Mar 07 PHP
在Mac OS下搭建LNMP开发环境的步骤详解
Mar 10 PHP
php+js实现裁剪任意形状图片
Oct 31 PHP
PHP中散列密码的安全性分析
Jul 26 PHP
php实现对短信验证码发送次数的限制实例讲解
Mar 04 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
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
Javascript实现的分页函数
2007/02/07 Javascript
基于jquery的让页面控件不可用的实现代码
2010/04/27 Javascript
Jquery上传插件 uploadify v3.1使用说明
2012/06/18 Javascript
js实现鼠标拖动图片并兼容IE/FF火狐/谷歌等主流浏览器
2013/06/06 Javascript
window.onresize 多次触发的解决方法
2013/11/08 Javascript
jQuery中[attribute!=value]选择器用法实例
2014/12/31 Javascript
详解JavaScript中的forEach()方法的使用
2015/06/08 Javascript
JavaScript中日期的相关操作方法总结
2015/10/24 Javascript
JS使用cookie实现只出现一次的广告代码效果
2017/04/22 Javascript
React 组件间的通信示例
2018/06/14 Javascript
微信小程序拍照和摄像功能实现方法示例
2019/02/01 Javascript
react同构实践之实现自己的同构模板
2019/03/13 Javascript
js刷新页面location.reload()用法详解
2019/12/09 Javascript
Node.js API详解之 util模块用法实例分析
2020/05/09 Javascript
JavaScript this指向相关原理及实例解析
2020/07/10 Javascript
微信小程序向Java后台传输参数的方法实现
2020/12/10 Javascript
浅谈Python中的闭包
2015/07/08 Python
详解python string类型 bytes类型 bytearray类型
2017/12/16 Python
Python扩展内置类型详解
2018/03/26 Python
Python 实现引用其他.py文件中的类和类的方法
2018/04/29 Python
分享8点超级有用的Python编程建议(推荐)
2019/10/13 Python
python数据库开发之MongoDB安装及Python3操作MongoDB数据库详细方法与实例
2020/03/18 Python
如何在sublime编辑器中安装python
2020/05/20 Python
Numpy 多维数据数组的实现
2020/06/18 Python
aec加密 php_php aes加密解密类(兼容php5、php7)
2021/03/14 PHP
美国顶级品牌男士大码服装店:DXL
2017/08/30 全球购物
LACOSTE波兰官网:Polo衫、服装和鞋类
2020/09/29 全球购物
优秀老师事迹材料
2014/02/05 职场文书
道德演讲稿
2014/05/21 职场文书
学雷锋先进个人事迹
2014/05/26 职场文书
市场营销专业求职信
2014/06/17 职场文书
2015年度服装销售工作总结
2015/03/31 职场文书
tensorflow学习笔记之tfrecord文件的生成与读取
2021/03/31 Python
golang 如何通过反射创建新对象
2021/04/28 Golang
「Manga Time Kirara MAX」2022年5月号封面公开
2022/03/21 日漫