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 相关文章推荐
php面向对象全攻略 (九)访问类型
Sep 30 PHP
PHP的cURL库功能简介 抓取网页、POST数据及其他
Apr 07 PHP
PHP判断文件是否存在、是否可读、目录是否存在的代码
Oct 03 PHP
PHP学习笔记(一) 简单了解PHP
Aug 04 PHP
PHP递归复制、移动目录的自定义函数分享
Nov 18 PHP
php字符串分割函数用法实例
Mar 17 PHP
PHP实现的简单网络硬盘
Jul 29 PHP
PHP getallheaders无法获取自定义头(headers)的问题
Mar 23 PHP
PHP实践教程之过滤、验证、转义与密码详解
Jul 24 PHP
PHP性能分析工具xhprof的安装使用与注意事项
Dec 19 PHP
php json转换相关知识(小结)
Dec 21 PHP
PHP实现数组向任意位置插入,删除,替换数据操作示例
Apr 05 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中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
2010/08/21 PHP
php注销代码(session注销)
2012/05/31 PHP
php简单获取目录列表的方法
2015/03/24 PHP
PHP中如何防止外部恶意提交调用ajax接口
2016/04/11 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
JQuery Tips(3) 关于$()包装集内元素的改变
2009/12/14 Javascript
用jquery实现下拉菜单效果的代码
2010/07/25 Javascript
JS保留两位小数,多位小数的示例代码
2014/01/07 Javascript
页面图片浮动左右滑动效果的简单实现案例
2014/02/10 Javascript
PHP实现的各种中文编码转换类分享
2015/01/23 Javascript
Javascript中String的常用方法实例分析
2015/06/13 Javascript
JavaScript数据存储 Cookie篇
2016/07/02 Javascript
微信小程序 获取当前地理位置和经纬度实例代码
2016/12/05 Javascript
基于Angular.js实现的触摸滑动动画实例代码
2017/02/19 Javascript
微信小程序实现表单校验功能
2020/03/30 Javascript
Vue仿今日头条实例详解
2018/02/06 Javascript
vue-cli项目中使用公用的提示弹层tips或加载loading组件实例详解
2018/05/28 Javascript
一个简单的node.js界面实现方法
2018/06/01 Javascript
微信小程序中如何使用flyio封装网络请求
2019/07/03 Javascript
Vue内部渲染视图的方法
2019/09/02 Javascript
[04:36]DOTA2国际邀请赛 ti3精彩集锦
2013/08/19 DOTA
Python中使用logging模块代替print(logging简明指南)
2014/07/09 Python
介绍Python中的一些高级编程技巧
2015/04/02 Python
Python实现LRU算法的2种方法
2015/06/24 Python
Python实现常见的回文字符串算法
2018/11/14 Python
Flask中endpoint的理解(小结)
2019/12/11 Python
python3中TQDM库安装及使用详解
2020/11/18 Python
python 窃取摄像头照片的实现示例
2021/01/08 Python
中职生自我鉴定范文
2013/10/03 职场文书
大一新生军训时的自我评价分享
2013/12/05 职场文书
ktv中秋节活动方案
2014/01/30 职场文书
个人自我鉴定总结
2014/03/25 职场文书
个人贷款承诺书
2014/03/28 职场文书
11.9消防日宣传标语
2014/10/08 职场文书
再婚婚前财产协议书范本
2014/10/19 职场文书
汽车车尾标语大全
2015/08/11 职场文书