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 相关文章推荐
从C/C++迁移到PHP——判断字符类型的函数
Oct 09 PHP
PHP编程中八种常见的文件操作方式
Nov 19 PHP
php 表单验证实现代码
Mar 10 PHP
php 显示指定路径下的图片
Oct 29 PHP
用js进行url编码后用php反解以及用php实现js的escape功能函数总结
Feb 08 PHP
QueryPath PHP 中的jQuery
Apr 11 PHP
PHP jQuery表单,带验证具体实现方法
Feb 15 PHP
PHP编程中的常见漏洞和代码实例
Aug 06 PHP
php 删除cookie方法详解
Dec 01 PHP
PHP转盘抽奖接口实例
Feb 09 PHP
PHP性能分析工具xhprof的安装使用与注意事项
Dec 19 PHP
Laravel5.5 实现后台管理登录的方法(自定义用户表登录)
Sep 30 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
为IP查询添加GOOGLE地图功能的代码
2010/08/08 PHP
PHP YII框架开发小技巧之模型(models)中rules自定义验证规则
2015/11/16 PHP
thinkphp5实现无限级分类
2019/02/18 PHP
js获取光标位置和设置文本框光标位置示例代码
2014/01/09 Javascript
jQuery插件slicebox实现3D动画图片轮播切换特效
2015/04/12 Javascript
js绘制圆形和矩形的方法
2015/08/05 Javascript
json+jQuery实现的无限级树形菜单效果代码
2015/08/27 Javascript
DOM操作和jQuery实现选项移动操作的简单实例
2016/06/07 Javascript
玩转NODE.JS(四)-搭建简单的聊天室的代码
2016/11/11 Javascript
js实现textarea限制输入字数
2017/02/13 Javascript
three.js绘制地球、飞机与轨迹的效果示例
2017/02/28 Javascript
jquery实现聊天机器人
2020/02/08 jQuery
js数组的基本使用总结
2021/01/18 Javascript
python实现划词翻译
2020/04/23 Python
状态机的概念和在Python下使用状态机的教程
2015/04/11 Python
Python中判断输入是否为数字的实现代码
2018/05/26 Python
Python pyinotify模块实现对文档的实时监控功能方法
2018/10/13 Python
更新pip3与pyttsx3文字语音转换的实现方法
2019/08/08 Python
Python爬虫爬取Bilibili弹幕过程解析
2019/10/10 Python
美国专营婴幼儿用品的购物网站:buybuy BABY
2017/01/01 全球购物
孕妇内衣和胸罩:Cake Maternity
2018/07/16 全球购物
尼克松手表官网:Nixon手表
2019/03/17 全球购物
意大利折扣和优惠券网站:Groupalia
2019/10/09 全球购物
Fossil德国官网:化石手表、手袋、珠宝及配件
2019/12/07 全球购物
加拿大留学自荐信
2014/01/28 职场文书
中年人生感言
2014/02/04 职场文书
工商管理专业自荐信
2014/06/03 职场文书
体育运动会广播稿
2014/10/05 职场文书
网络营销计划书
2015/01/17 职场文书
2015年国庆节活动总结
2015/03/23 职场文书
2015年乡镇平安建设工作总结
2015/05/13 职场文书
迎国庆主题班会
2015/08/17 职场文书
2019感恩宣传标语!
2019/07/05 职场文书
django上传文件的三种方式
2021/04/29 Python
Python爬取用户观影数据并分析用户与电影之间的隐藏信息!
2021/06/29 Python
简单且有用的Python数据分析和机器学习代码
2021/07/02 Python