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 相关文章推荐
文章推荐系统(三)
Oct 09 PHP
php中iconv函数使用方法
May 24 PHP
php fsockopen伪造post与get方法的详解
Jun 14 PHP
又一个PHP实现的冒泡排序算法分享
Aug 21 PHP
PHP批量去除BOM头代码分享
Jun 26 PHP
[原创]php逐行读取txt文件写入数组的方法
Jul 02 PHP
PHP使用PDO操作数据库的乱码问题解决方法
Apr 08 PHP
yii2 页面底部加载css和js的技巧
Apr 21 PHP
PHP符合PSR编程规范的实例分享
Dec 21 PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
Sep 07 PHP
laravel实现查询最后执行的一条sql语句的方法
Oct 09 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
Mar 24 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 CLI模式下的多进程应用分析
2013/06/03 PHP
PHP实现文件上传和多文件上传
2015/12/24 PHP
解析WordPress中的post_class与get_post_class函数
2016/01/04 PHP
必须收藏的php实用代码片段
2016/02/02 PHP
vmware linux系统安装最新的php7图解
2019/04/14 PHP
PHP使用PDO实现mysql防注入功能详解
2019/12/20 PHP
Jquery 高亮显示文本中重要的关键字
2009/12/24 Javascript
JavaScript中的稀疏数组与密集数组[译]
2012/09/17 Javascript
Javascript执行效率全面总结
2013/11/04 Javascript
ExtJS4如何给同一个formpanel不同的url
2014/05/02 Javascript
学习JavaScript设计模式(接口)
2015/11/26 Javascript
Jquery实现的简单轮播效果【附实例】
2016/04/19 Javascript
30分钟快速掌握Bootstrap框架
2016/05/24 Javascript
浅析$(function) ready和onload 的区别
2016/09/03 Javascript
js通过指定下标或指定元素进行删除数组的实例
2017/01/12 Javascript
webpack使用 babel-loader 转换 ES6代码示例
2017/08/21 Javascript
关于jQuery里prev()的简单操作代码
2017/10/27 jQuery
vue树形结构获取键值的方法示例
2018/06/21 Javascript
mustache.js实现首页元件动态渲染的示例代码
2020/12/28 Javascript
[00:16]热血竞技场
2019/03/06 DOTA
读写json中文ASCII乱码问题的解决方法
2016/11/05 Python
python实现字典(dict)和字符串(string)的相互转换方法
2017/03/01 Python
python模仿网页版微信发送消息功能
2018/02/24 Python
对python的bytes类型数据split分割切片方法
2018/12/04 Python
对python中list的拷贝与numpy的array的拷贝详解
2019/01/29 Python
Python 分布式缓存之Reids数据类型操作详解
2020/06/24 Python
css3气泡 css3关键帧动画创建的动态通知气泡
2013/02/26 HTML / CSS
css3实现文字首尾衔接跑马灯的示例代码
2020/10/16 HTML / CSS
美国智能家居专家:tink
2019/06/04 全球购物
中学劳技课教师的自我评价
2014/02/05 职场文书
国贸专业的职业规划书
2014/03/15 职场文书
学习教师敬业奉献模范事迹材料思想汇报
2014/09/19 职场文书
房屋租赁授权委托书范本
2014/09/20 职场文书
2015年体育教师个人工作总结
2015/05/12 职场文书
员工保密协议范本,您一定得收藏!很有用!
2019/08/08 职场文书
MySQL创建管理RANGE分区
2022/04/13 MySQL