本文实例讲述了PHP 范围解析操作符(::)用法。分享给大家供大家参考,具体如下:

范围解析操作符 (::)

范围解析操作符(也可称作 Paamayim Nekudotayim)或者更简单地说是一对冒号,可以用于访问静态成员,类常量,还可以用于覆盖类中的属性和方法。

当在类定义之外引用到这些项目时,要使用类名。

自 PHP 5.3.0 起,可以通过变量来引用类,该变量的值不能是关键字(如 self,parent 和 static)。

把 Paamayim Nekudotayim 选作双冒号操作符的名字似乎有些奇怪。然而,这是 Zend 开发小组在写 Zend Engine 0.5(被用于 PHP 3 中)时所作出的决定。事实上这个词在希伯莱文就是双冒号的意思。

在类的外部使用 ::

self,parent 和 static 这三个特殊的关键字是用于在类定义的内部对其属性或方法进行访问的。

class MyClass {

const CONST_VALUE = 'A constant value';

}

$classname = 'MyClass';

echo $classname::CONST_VALUE; // 自 PHP 5.3.0 起

echo MyClass::CONST_VALUE;

在类定义的内部使用 ::

当一个子类覆盖其父类中的方法时,PHP 不会调用父类中已被覆盖的方法。是否调用父类的方法取决于子类。这种机制也作用于构造函数和析构函数,重载以及魔术方法。

class OtherClass extends MyClass

{

public static $my_static = 'static var';

public static function doubleColon() {

echo parent::CONST_VALUE . "\n";

echo self::$my_static . "\n";

}

}

$classname = 'OtherClass';

echo $classname::doubleColon(); // 自 PHP 5.3.0 起

OtherClass::doubleColon();

调用父类的方法

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();

运行结果:

MyClass::myFunc()

OtherClass::myFunc()

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

php中的解析范围符,PHP 范围解析操作符(::)用法分析【访问静态成员和类常量】...相关推荐

  1. php自然排序法的比较过程,PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)...

    本文实例讲述了PHP中strnatcmp()函数"自然排序算法"进行字符串比较用法.分享给大家供大家参考,具体如下: PHP中strnatcmp()函数使用"自然&quo ...

  2. mysql 正则替换 换行,MySQL中使用replace、regexp进行正则表达式替换的用法分析

    本文实例讲述了MySQL中使用replace.regexp进行正则表达式替换的用法.,具体如下: 今天一个朋友问我,如果将数据库中查到的类似于"./uploads/110100_cityHo ...

  3. mysql替换首字母_MySQL中使用replace、regexp进行正则表达式替换的用法分析

    这篇文章主要介绍了MySQL中使用replace.regexp进行正则表达式替换的用法,结合具体实例形式分析了replace.regexp正则替换的使用技巧与相关注意事项,需要的朋友可以参考下 本文实 ...

  4. js mysql替换_MySQL中使用replace、regexp进行正则表达式替换的用法分析

    本文实例讲述了MySQL中使用replace.regexp进行正则表达式替换的用法.分享给大家供大家参考,具体如下: 今天一个朋友问我,如果将数据库中查到的类似于"./uploads/110 ...

  5. mysql正则替换_MySQL中使用replace、regexp进行正则表达式替换的用法分析

    本文实例讲述了MySQL中使用replace.regexp进行正则表达式替换的用法.分享给大家供大家参考,具体如下: 今天一个朋友问我,如果将数据库中查到的类似于"./uploads/110 ...

  6. oracle无法解析连接符,oracle无法解析连接字符串,请教

    oracle无法解析连接字符串,请教 C# code: string StrConnection = "Server=127.0.0.1;Data Source=kagami;User ID ...

  7. 不应该通过类实例访问静态成员 解决方法_今天说一说php中的类与对象

    网上的文章博客这种东西已经写烂了. 我只是写写自己理解.... 首先都知道php的面向对象,什么封装,集成,多态,灵活,简单,代码简洁,重用行强,利于维护,什么什么三个方向:灵活性,重用行,扩展性. ...

  8. php中的解析范围符,如何合理使用php7范围解析操作符

    class Base{ const mynum=1111;//基类常量 public static $num=11;//基类静态成员变量 public $name='base zhangsan';// ...

  9. 80x86描述符总结及解析描述符的小程序

    一.描述符的分类 二.描述符格式 1.数据段描述符 2.代码段描述符 3.LDT段描述符 4.TSS段描述符 5.调用门描述符 6.中断门描述符 7.陷阱门描述符 8.任务门描述符 三.解析描述符的小 ...

最新文章

  1. java link 使用_使用 C 实现Java LinkList
  2. 『高级篇』docker之开发课程EdgeService(16)
  3. 为什么项目开放源代码之后就变成死项目 很少或几乎不再更新
  4. 09_Android中ContentProvider和Sqllite混合操作,一个项目调用另外一个项目的ContentProvider
  5. 二十一、Hadoop学记笔记————kafka的初识
  6. [C++学习历程]基础部分 C++中的函数学习
  7. 5新建没有头文件_开垦绿茵版图迎来“真金白银”保障,新建足球场地可获财政补贴...
  8. Z-Stack Home Developer's Guide—8. Additional Information for HA Applications中文翻译
  9. java中的map是什么_转载java中Map的详解
  10. 计算机调试致sa登录失败,无法打开登录 'xxxx' 中请求的数据库。登录失败。用户 'sa' 登录失败。解决思路...
  11. PsotgreSQL
  12. ipv6 华为交换机 路由配置_华为模拟器ipv6接口配置
  13. C++11 static_assert
  14. python3 输出系统信息
  15. SpingMVC之拦截器
  16. java foreach 赋值_java foreach 使用
  17. 软件测试项目复盘,如何开始复盘测试_测试_复盘大师官网
  18. dcp9030cdn定影_兄弟DCP-9030CDN驱动下载
  19. 安装图解:Linux Mint 4.0(Daryna)(或者说完美的桌面系统)
  20. 入坑NLP - 自然语言处理领域概述

热门文章

  1. 机器学习-python的工作目录
  2. gpu服务器性能测试用例,多目标测试用例预优化方法及其在GPU上的应用研究
  3. 拖拽批量上传图片如何保证 顺序_新手指南︱shopee店铺上架产品该如何操作?...
  4. srs流媒体服务器windows_基于SRS构建的直播平台的监控系统的搭建思路与实现方法...
  5. new和delete创建和销毁二维数组
  6. Linux编程(2)_软件的安装和卸载
  7. 重装华为服务器系统教程视频教程,服务器系统重装步骤
  8. c语言程序机试题及答案,C语言程序设计试题及答案解析(二)
  9. mysql 日期循环_如何在mysql存储过程中循环日期时间
  10. 富文本编辑器CKEditor 5开发环境搭建