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 相关文章推荐
window+nginx+php环境配置 附配置搭配说明
Dec 29 PHP
基于Zend的Config机制的应用分析
May 02 PHP
如何使用php实现评委评分器
Jul 31 PHP
php生成验证码函数
Oct 20 PHP
php解析url并得到url中的参数及获取url参数的四种方式
Oct 26 PHP
WordPress中的shortcode短代码功能使用详解
May 17 PHP
PHP记录和读取JSON格式日志文件
Jul 07 PHP
php实现有序数组打印或排序的方法【附Python、C及Go语言实现代码】
Nov 10 PHP
PHP实现的文件上传类与用法详解
Jul 05 PHP
php strftime函数的详细用法
Jun 21 PHP
PHP自动生成缩略图函数的源码示例
Mar 18 PHP
laravel执行php artisan migrate报错的解决方法
Oct 09 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中通过HTTP_USER_AGENT判断是否为手机移动终端的函数代码
2013/02/14 PHP
php中的strpos使用示例
2014/02/27 PHP
php实现的漂亮分页方法
2014/04/17 PHP
自己写了一个php检测文件编码的函数
2014/04/21 PHP
php线性表的入栈与出栈实例分析
2015/06/12 PHP
PHP批量获取网页中所有固定种子链接的方法
2016/11/18 PHP
thinkPHP3.2.2框架行为扩展及demo示例
2018/06/19 PHP
jQuery DIV弹出效果实现代码
2009/07/03 Javascript
jquery 仿QQ校友的DIV模拟窗口效果源码
2010/03/24 Javascript
js更优雅的兼容
2010/08/12 Javascript
Extjs3.0 checkboxGroup 动态添加item实现思路
2013/08/14 Javascript
javascript scrollTop正解使用方法
2013/11/14 Javascript
Summernote实现图片上传功能的简单方法
2016/07/11 Javascript
利用jQuery的动画函数animate实现豌豆发射效果
2016/08/28 Javascript
详解RequireJS按需加载样式文件
2017/04/12 Javascript
使用jQuery实现两个div中按钮互换位置的实例代码
2017/09/21 jQuery
ES6学习教程之块级作用域详解
2017/10/09 Javascript
Vue 实现列表动态添加和删除的两种方法小结
2018/09/07 Javascript
微信小程序开发之tabbar图标和颜色的实现
2018/10/17 Javascript
基于Vue el-autocomplete 实现类似百度搜索框功能
2019/10/25 Javascript
vue视频播放暂停代码
2019/11/08 Javascript
Python数据类型详解(一)字符串
2016/05/08 Python
python实现自动发送邮件发送多人、群发、多附件的示例
2018/01/23 Python
使用实现XlsxWriter创建Excel文件并编辑
2018/05/04 Python
Django--权限Permissions的例子
2019/08/28 Python
flask框架url与重定向操作实例详解
2020/01/25 Python
实例代码讲解Python 线程池
2020/08/24 Python
CSS3中的Media Queries学习笔记
2016/05/23 HTML / CSS
使用html5+css3来实现slider切换效果告别javascript+css
2013/01/08 HTML / CSS
赫里福德的一家乡村零售商店:Philip Morris & Son
2017/06/25 全球购物
Smallable意大利家庭概念店:设计师童装及家居装饰
2018/01/08 全球购物
珍惜资源保护环境的建议书
2014/05/14 职场文书
《童年》读后感(三篇)
2019/08/27 职场文书
通过Qt连接OpenGauss数据库的详细教程
2021/06/23 PostgreSQL
MySQL慢查询优化解决问题
2022/03/17 MySQL
uniapp开发打包多端应用完整方法指南
2022/12/24 Javascript