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 Stream_*系列函数
Aug 01 PHP
解决文件名解压后乱码的问题 将文件名进行转码的代码
Jan 10 PHP
浅析php插件 Simple HTML DOM 用DOM方式处理HTML
Jul 01 PHP
php数组去重复数据示例
Feb 25 PHP
PHP实现批量上传单个文件
Dec 29 PHP
PHP魔术方法使用方法汇总
Feb 14 PHP
php采集神器cURL使用方法详解
Feb 19 PHP
PHP实现适用于自定义的验证码类
Jun 15 PHP
thinkphp中多表查询中防止数据重复的sql语句(必看)
Sep 22 PHP
Yii2框架加载css和js文件的方法分析
May 25 PHP
PHP生成图表pChart的示例解析
Jul 31 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编程过程中需要了解的this,self,parent的区别
2009/12/30 PHP
在PHP中利用wsdl创建标准webservice的实现代码
2011/12/07 PHP
php file_get_contents抓取Gzip网页乱码的三种解决方法
2013/11/12 PHP
对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析
2014/07/04 PHP
jQuery获取json后使用zy_tmpl生成下拉菜单
2015/03/27 PHP
ThinkPHP框架实现的微信支付接口开发完整示例
2019/04/10 PHP
PHP sdk实现在线打包代码示例
2020/12/09 PHP
JS获取整个页面文档的实现代码
2011/12/15 Javascript
一个页面元素appendchild追加到另一个页面元素的问题
2013/01/27 Javascript
javascript:void(0)使用探讨
2013/08/27 Javascript
鼠标移入移出事件改变图片的分辨率的两种方法
2013/12/17 Javascript
javascript将url中的参数加密解密代码
2014/11/17 Javascript
jquery Validation表单验证使用详解
2020/09/12 Javascript
js实现两点之间画线的方法
2015/05/12 Javascript
介绍JavaScript中Math.abs()方法的使用
2015/06/14 Javascript
javascript实现消灭星星小游戏简单版
2016/11/15 Javascript
node.js版本管理工具n无效的原理和解决方法
2016/11/24 Javascript
jQuery+CSS实现的table表格行列转置功能示例
2018/01/08 jQuery
Express进阶之log4js实用入门指南
2018/02/10 Javascript
记一次webapck4 配置文件无效的解决历程
2018/09/19 Javascript
小程序实现左滑删除效果
2019/07/25 Javascript
微信小程序getLocation 需要在app.json中声明permission字段
2020/03/03 Javascript
[05:40]DOTA2荣耀之路6:Wings最后进攻
2018/05/30 DOTA
玩转python爬虫之cookie使用方法
2016/02/17 Python
python计算auc指标实例
2017/07/13 Python
python生成九宫格图片
2018/11/19 Python
jenkins+python自动化测试持续集成教程
2020/05/12 Python
解决tensorflow/keras时出现数组维度不匹配问题
2020/06/29 Python
总经理职责范文
2013/11/08 职场文书
大学生毕业自我评价范文分享
2013/11/11 职场文书
《母亲的恩情》教学反思
2014/02/13 职场文书
报关报检委托书
2014/04/08 职场文书
投资意向书
2014/07/30 职场文书
庆六一文艺汇演活动方案
2014/08/26 职场文书
寒假生活随笔
2015/08/15 职场文书
教育教学工作反思
2016/02/24 职场文书