PHP 范围解析操作符(::)用法分析【访问静态成员和类常量】


Posted in PHP onApril 14, 2020

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

范围解析操作符 (::)

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

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

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

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

在类的外部使用  ::

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

<?php
class MyClass {
  const CONST_VALUE = 'A constant value';
}

$classname = 'MyClass';
echo $classname::CONST_VALUE; // 自 PHP 5.3.0 起

echo MyClass::CONST_VALUE;

在类定义的内部使用 ::

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

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

调用父类的方法

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

运行结果:

MyClass::myFunc()
OtherClass::myFunc()

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

PHP 相关文章推荐
解决控件遮挡问题:关于有窗口元素和无窗口元素
Jan 28 PHP
简单的PHP图片上传程序
Mar 27 PHP
PHP取得一个类的属性和方法的实现代码
May 22 PHP
php自定义函数call_user_func和call_user_func_array详解
Jul 14 PHP
Notice: Trying to get property of non-object problem(PHP)解决办法
Mar 11 PHP
将酷狗krc歌词解析并转换为lrc歌词php源码
Jun 20 PHP
php 使用array函数实现分页
Feb 13 PHP
Yii控制器中filter过滤器用法分析
Jul 15 PHP
php从身份证获取性别和出生年月
Feb 09 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
Jul 22 PHP
PHP+Apache环境中如何隐藏Apache版本
Nov 24 PHP
php进程daemon化的正确实现方法
Sep 06 PHP
PHP 自动加载类原理与用法实例分析
Apr 14 #PHP
php操作redis常见方法示例【key与value操作】
Apr 14 #PHP
PHPExcel实现的读取多工作表操作示例
Apr 14 #PHP
ThinkPHP 框架实现的读取excel导入数据库操作示例
Apr 14 #PHP
PHP 面向对象程序设计之类属性与类常量实现方法分析
Apr 13 #PHP
PHP 对象接口简单实现方法示例
Apr 13 #PHP
php使用goto实现自动重启swoole、reactphp、workerman服务的代码
Apr 13 #PHP
You might like
PHP与SQL注入攻击[一]
2007/04/17 PHP
php自定义函数call_user_func和call_user_func_array详解
2011/07/14 PHP
如何修改Laravel中url()函数生成URL的根地址
2017/08/11 PHP
如何直接访问php实例对象中的private属性详解
2017/10/12 PHP
PHP设计模式之单例模式原理与实现方法分析
2018/04/25 PHP
tp5(thinkPHP5)框架数据库Db增删改查常见操作总结
2019/01/10 PHP
php转换上传word文件为PDF的方法【基于COM组件】
2019/06/10 PHP
Jquery选中或取消radio示例
2013/09/29 Javascript
js实现简单折叠、展开菜单的方法
2015/08/28 Javascript
vue项目中做编辑功能传递数据时遇到问题的解决方法
2016/12/19 Javascript
三种方式实现瀑布流布局
2017/02/10 Javascript
vue2 前端搜索实现示例
2018/02/26 Javascript
jQuery实现DIV响应鼠标滑过由下向上展开效果示例【测试可用】
2018/04/26 jQuery
Vue实现6位数密码效果
2018/08/18 Javascript
VUE实现强制渲染,强制更新
2019/10/29 Javascript
vue 使用v-for进行循环的实例代码详解
2020/02/19 Javascript
VueQuillEditor富文本上传图片(非base64)
2020/06/03 Javascript
Element中Slider滑块的具体使用
2020/07/29 Javascript
Python自动化构建工具scons使用入门笔记
2015/03/10 Python
Python解析nginx日志文件
2015/05/11 Python
python 迭代器和iter()函数详解及实例
2017/03/21 Python
Python使用re模块实现信息筛选的方法
2018/04/29 Python
Python中的函数式编程:不可变的数据结构
2018/10/08 Python
Python实现的插入排序,冒泡排序,快速排序,选择排序算法示例
2019/05/04 Python
利用Python绘制有趣的万圣节南瓜怪效果
2019/10/31 Python
python中urllib.request和requests的使用及区别详解
2020/05/05 Python
Roxy美国官网:澳大利亚冲浪、滑雪健身品牌
2016/07/30 全球购物
员工工作表扬信范文
2014/01/13 职场文书
小学运动会广播稿200字(十二篇)
2014/01/14 职场文书
高三毕业评语
2014/12/31 职场文书
冲出亚马逊观后感
2015/06/03 职场文书
工资证明范本
2015/06/12 职场文书
百日宴上的祝酒词
2015/08/10 职场文书
导游词之南迦巴瓦峰
2019/11/19 职场文书
python3 字符串str和bytes相互转换
2022/03/23 Python
Python OpenCV实现图像模板匹配详解
2022/04/07 Python