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中取得URL的根域名的代码
Mar 23 PHP
PHP+Mysql+jQuery实现发布微博程序 jQuery篇
Oct 08 PHP
基于php验证码函数的使用示例
May 03 PHP
解析func_num_args与func_get_args函数的使用
Jun 24 PHP
在PHP上显示JFreechart画的统计图方法
Nov 03 PHP
php上传图片之时间戳命名(保存路径)
Aug 15 PHP
php中的ini配置原理详解
Oct 14 PHP
php实现计数器方法小结
Jan 05 PHP
codeigniter中实现一次性加载多个view的方法
Mar 20 PHP
PHP实现清除MySQL死连接的方法
Jul 23 PHP
yii2高级应用之自定义组件实现全局使用图片上传功能的方法
Oct 08 PHP
php自动加载代码实例详解
Feb 26 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实现的MySQL数据浏览器
2007/03/11 PHP
php 文件上传实例代码
2012/04/19 PHP
php curl模拟post请求小实例
2013/11/13 PHP
JS中剪贴板兼容性、判断复制成功或失败
2021/03/09 Javascript
点图片上一页下一页翻页效果
2008/07/09 Javascript
js 页面刷新location.reload和location.replace的区别小结
2009/12/24 Javascript
JavaScript获取页面上某个元素的代码
2011/03/13 Javascript
基于jQuery的计算文本框字数的代码
2012/06/06 Javascript
js判断FCKeditor内容是否为空的两种形式
2013/05/14 Javascript
javascript中SetInterval与setTimeout的定时器用法
2015/08/24 Javascript
jquery实现的横向二级导航效果代码
2015/08/26 Javascript
js阻止浏览器默认行为的简单实例
2016/05/15 Javascript
解读Bootstrap v4 sass设计
2016/05/29 Javascript
node.js 中国天气预报 简单实现
2016/06/06 Javascript
JQ选择器_选择同类元素的第N个子元素的实现方法
2016/09/08 Javascript
react native与webview通信的示例代码
2017/09/25 Javascript
Vue中render方法的使用详解
2018/01/26 Javascript
vue中引用阿里字体图标的方法
2018/02/10 Javascript
Vue常用的几个指令附完整案例
2018/11/06 Javascript
JS异步错误捕获的一些事小结
2019/04/26 Javascript
Python socket.error: [Errno 98] Address already in use的原因和解决方法
2014/08/25 Python
python 打印出所有的对象/模块的属性(实例代码)
2016/09/11 Python
使用python存储网页上的图片实例
2018/05/22 Python
python and or用法详解
2019/06/26 Python
一款纯css3制作的2015年元旦雪人动画特效教程
2014/12/29 HTML / CSS
HTML5页面嵌入小程序没有返回按钮及返回页面空白的问题
2020/05/28 HTML / CSS
个人党性剖析材料
2014/02/03 职场文书
岗位竞聘演讲稿范文
2014/04/24 职场文书
宾馆仓管员岗位职责
2014/07/27 职场文书
学党史心得体会
2014/09/05 职场文书
会议接待欢迎标语
2014/10/08 职场文书
看上去很美观后感
2015/06/10 职场文书
关于五一放假的通知
2015/08/18 职场文书
预备党员入党思想汇报(范文)
2019/08/14 职场文书
vue使用refs获取嵌套组件中的值过程
2022/03/31 Vue.js
安装harbor作为docker镜像仓库的问题
2022/06/14 Servers