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抓取https的内容的代码
Apr 06 PHP
php 各种应用乱码问题的解决方法
May 09 PHP
备份mysql数据库的php代码(一个表一个文件)
May 28 PHP
php简单提示框alert封装函数
Aug 08 PHP
解析PHP多种序列化与反序列化的方法
Jun 06 PHP
php接口和抽象类使用示例详解
Mar 02 PHP
php实现比较两个文件夹异同的方法
Jun 18 PHP
fsockopen pfsockopen函数被禁用,SMTP发送邮件不正常的解决方法
Sep 20 PHP
从刷票了解获得客户端IP的方法
Sep 21 PHP
php5.2的curl-bug 服务器被php进程卡死问题排查
Sep 19 PHP
php的常量和变量实例详解
Jun 27 PHP
php-7.3.6 编译安装过程
Feb 11 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将向Java靠拢
2006/10/09 PHP
Can't create/write to file 'C:\WINDOWS\TEMP\...MYSQL报错解决方法
2011/06/30 PHP
php实现设计模式中的单例模式详解
2014/10/11 PHP
详解Grunt插件之LiveReload实现页面自动刷新(两种方案)
2015/07/31 PHP
微信红包随机生成算法php版
2016/07/21 PHP
PHP isset()与empty()的使用区别详解
2017/02/10 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
2020/03/30 PHP
jQuery 中关于CSS操作部分使用说明
2007/06/10 Javascript
关于scrollLeft,scrollTop的浏览器兼容性测试
2013/03/19 Javascript
jQuery表格插件ParamQuery简单使用方法示例
2013/12/05 Javascript
关于onchange事件在IE和FF下的表现及解决方法
2014/03/08 Javascript
可恶的ie8提示缺少id未定义
2014/03/20 Javascript
JavaScript学习笔记之JS事件对象
2015/01/22 Javascript
js+canvas绘制矩形的方法
2016/01/28 Javascript
jQuery弹出层后禁用底部滚动条(移动端关闭回到原位置)
2016/08/29 Javascript
JS 对java返回的json格式的数据处理方法
2016/12/05 Javascript
解决BootStrap Fileinput手机图片上传显示旋转问题
2017/06/01 Javascript
VSCode配置react开发环境的步骤
2017/12/27 Javascript
微信小程序上传图片功能(附后端代码)
2020/06/19 Javascript
angular6 利用 ngContentOutlet 实现组件位置交换(重排)
2018/11/02 Javascript
bootstrap 日期控件 datepicker被弹出框dialog覆盖的解决办法
2019/07/09 Javascript
在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程
2015/04/25 Python
python实现对excel进行数据剔除操作实例
2017/12/07 Python
Python利用pandas处理Excel数据的应用详解
2019/06/18 Python
pytorch在fintune时将sequential中的层输出方法,以vgg为例
2019/08/20 Python
通过 Django Pagination 实现简单分页功能
2019/11/11 Python
openCV提取图像中的矩形区域
2020/07/21 Python
Python txt文件常用读写操作代码实例
2020/08/03 Python
CSS3 渐变(Gradients)之CSS3 线性渐变
2016/07/08 HTML / CSS
CSS3 制作绽放的莲花采用效果叠加实现
2013/01/31 HTML / CSS
优秀党支部书记事迹材料
2014/05/29 职场文书
汉语言文学专业自荐信
2014/06/11 职场文书
学校花圃的标语
2014/06/18 职场文书
小学生教师节演讲稿
2014/09/03 职场文书
股份合作协议书
2014/09/10 职场文书
学生自我鉴定格式及范文
2014/09/16 职场文书