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获取远程图片并把它保存到本地的代码
Apr 07 PHP
PHP 网页过期时间的控制代码
Jun 29 PHP
ThinkPHP php 框架学习笔记
Oct 30 PHP
浅谈discuz密码加密的方式
May 22 PHP
php+mysqli实现将数据库中一张表信息打印到表格里的方法
Jan 28 PHP
php实现多城市切换特效
Aug 09 PHP
学习php设计模式 php实现建造者模式
Dec 07 PHP
在WordPress中使用PHP脚本来判断访客来自什么国家
Dec 10 PHP
php获取本机真实IP地址实例代码
Mar 31 PHP
关于PHP中字符串与多进制转换函数的实例代码
Nov 03 PHP
PHP设计模式之工厂模式实例总结
Sep 01 PHP
laravel利用中间件防止未登录用户直接访问后台的方法
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
UCenter Home二次开发指南
2009/05/28 PHP
php 输出双引号&quot;与单引号'的方法
2010/05/09 PHP
php读取目录所有文件信息dir示例
2014/03/18 PHP
两千行代码的PHP学习笔记汇总
2014/10/05 PHP
thinkphp命名空间用法实例详解
2015/12/30 PHP
javascript 密码强弱度检测万能插件
2009/02/25 Javascript
Jquery插件之打造自定义的select标签
2011/11/30 Javascript
一个简单的弹性返回顶部JS代码实现介绍
2013/06/09 Javascript
Jquery 模拟用户点击超链接或者按钮的方法
2013/10/25 Javascript
js实现的tab标签切换效果代码分享
2015/08/25 Javascript
javascript数据结构之双链表插入排序实例详解
2015/11/25 Javascript
jQuery qrcode生成二维码的方法
2016/04/03 Javascript
js添加绑定事件的方法
2016/05/15 Javascript
解决使用layui对select append元素无效或者未及时更新的问题
2019/09/18 Javascript
小程序使用分包的示例代码
2020/03/23 Javascript
[02:14]DOTA2英雄基础教程 修补匠
2013/12/23 DOTA
Python入门篇之字典
2014/10/17 Python
Python中统计函数运行耗时的方法
2015/05/05 Python
python实现文本去重且不打乱原本顺序
2016/01/26 Python
python实现寻找最长回文子序列的方法
2018/06/02 Python
Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】
2019/10/17 Python
说出数据连接池的工作机制是什么?
2013/04/19 面试题
国际贸易个人求职信范文
2014/01/04 职场文书
考试不及格的检讨书
2014/01/22 职场文书
大学考试作弊检讨书
2014/01/30 职场文书
餐厅采购员岗位职责
2014/03/06 职场文书
机关会计岗位职责
2014/04/08 职场文书
中学生评语大全
2014/04/18 职场文书
运动会广播稿诗歌版
2014/09/12 职场文书
群众路线组织生活会发言材料
2014/10/17 职场文书
作文评语怎么写
2014/12/25 职场文书
餐厅收银员岗位职责
2015/04/07 职场文书
撤诉状格式范本
2015/05/19 职场文书
教你使用Pandas直接核算Excel中快递费用
2021/05/12 Python
十大最强飞行系宝可梦,BUG燕上榜,第二是飞行系王者
2022/03/18 日漫
V Rising 服务器搭建图文教程
2022/06/16 Servers