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 相关文章推荐
dedecms模版制作使用方法
Apr 03 PHP
php REMOTE_ADDR之获取访客IP的代码
Apr 22 PHP
php导入导出excel实例
Oct 25 PHP
PHP+javascript制作带提示的验证码源码分享
May 28 PHP
50个PHP程序性能优化的方法
Jun 02 PHP
百度工程师讲PHP函数的实现原理及性能分析(一)
May 13 PHP
ECSHOP在PHP5.5及高版本上报错的解决方法
Aug 31 PHP
详解PHP的Yii框架中的Controller控制器
Mar 29 PHP
thinkPHP实现签到功能的方法
Mar 15 PHP
POST一个JSON格式的数据给Restful服务实例详解
Apr 07 PHP
MAC下通过改apache配置文件切换php多版本的方法
Apr 26 PHP
PHP手机号中间四位用星号*代替显示的实例
Jun 02 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 获得汉字拼音首字母的函数
2009/08/01 PHP
php的一些小问题
2010/07/03 PHP
Codeigniter发送邮件的方法
2015/03/19 PHP
php获取图片信息的方法详解
2015/12/10 PHP
Yii框架常见缓存应用实例小结
2019/09/09 PHP
JavaScript 快捷键设置实现代码
2009/03/13 Javascript
在网页中使用document.write时遭遇的奇怪问题
2010/08/24 Javascript
jquery使用$(element).is()来判断获取的tagName
2014/08/24 Javascript
jquery操作 iframe的方法
2014/12/03 Javascript
js函数内变量的作用域分析
2015/01/12 Javascript
纯javascript实现简单下拉刷新功能
2015/03/13 Javascript
JavaScript编程的单例设计模讲解
2015/11/10 Javascript
使用JQuery选择HTML遍历函数的方法
2016/09/17 Javascript
EasyUI为Numberbox添加blur事件的方法
2017/03/05 Javascript
JS+DIV实现的卷帘效果示例
2017/03/22 Javascript
原生JS 购物车及购物页面的cookie使用方法
2017/08/21 Javascript
vue解决使用webpack打包后keep-alive不生效的方法
2018/09/01 Javascript
vue插件实现v-model功能
2018/09/10 Javascript
100行代码实现一个vue分页组功能
2018/11/06 Javascript
Vue.js计算机属性computed和methods方法详解
2019/10/12 Javascript
[01:28:31]《加油DOTA》真人秀 第五期
2014/09/01 DOTA
Python实现读取及写入csv文件的方法示例
2018/01/12 Python
符合语言习惯的 Python 优雅编程技巧【推荐】
2018/09/25 Python
python实现五子棋人机对战游戏
2020/03/25 Python
Pycharm远程调试原理及具体配置详解
2019/08/08 Python
Python 抓取数据存储到Redis中的操作
2020/07/16 Python
python 使用三引号时容易犯的小错误
2020/10/21 Python
纯CSS实现预加载动画效果
2017/09/06 HTML / CSS
html5配合css3实现带提示文字的输入框(摆脱js)
2013/03/08 HTML / CSS
科颜氏英国官网:Kiehl’s英国
2019/11/20 全球购物
Internet体系结构
2014/12/21 面试题
国贸专业毕业求职信
2014/06/11 职场文书
装修活动策划方案
2014/08/27 职场文书
运动会新闻稿
2015/07/17 职场文书
图书馆义工感想
2015/08/07 职场文书
Python列表删除重复元素与图像相似度判断及删除实例代码
2021/05/07 Python