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中通过smtp发邮件的类,测试通过
Jan 22 PHP
PHPMailer邮件类利用smtp.163.com发送邮件方法
Sep 11 PHP
vs中通过剪切板循环来循环粘贴不同内容
Apr 30 PHP
关于PHP堆栈与列队的学习
Jun 21 PHP
php插入排序法实现数组排序实例
Feb 16 PHP
php中文繁体和简体相互转换的方法
Mar 21 PHP
PHP页面转UTF-8中文编码乱码的解决办法
Oct 20 PHP
Zend Framework教程之Zend_Registry对象用法分析
Mar 22 PHP
php封装单文件上传到数据库(路径)
Oct 15 PHP
PHP的mysqli_sqlstate()函数讲解
Jan 23 PHP
ThinkPHP框架结合Ajax实现用户名校验功能示例
Jul 03 PHP
thinkphp5框架结合mysql实现微信登录和自定义分享链接与图文功能示例
Aug 13 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
thinkPHP5框架auth权限控制类与用法示例
2018/06/12 PHP
jQuery的一些注意
2006/12/06 Javascript
自制基于jQuery的智能提示插件一枚
2011/02/18 Javascript
基于jquery的鼠标拖动效果代码
2012/05/30 Javascript
正负小数点后两位浮点数实现原理及代码
2013/09/06 Javascript
js简单实现根据身份证号码识别性别年龄生日
2013/11/29 Javascript
jQuery实现首页图片淡入淡出效果的方法
2015/06/10 Javascript
js倒计时抢购实例
2015/12/20 Javascript
超全面的javascript中变量命名规则
2017/02/09 Javascript
bootstrap 设置checkbox部分选中效果
2017/04/20 Javascript
bootstrap基本配置_动力节点Java学院整理
2017/07/14 Javascript
原生JS与jQuery编写简单选项卡
2017/10/30 jQuery
11行JS代码制作二维码生成功能
2018/03/09 Javascript
jQuery使用bind动态绑定事件无效的处理方法
2018/12/11 jQuery
JavaScript简单实现的仿微博留言功能示例
2019/01/17 Javascript
echarts实现词云自定义形状的示例代码
2019/02/20 Javascript
微信小程序mpvue点击按钮获取button值的方法
2019/05/29 Javascript
Vue两种组件类型:递归组件和动态组件的用法
2020/08/06 Javascript
速记Python布尔值
2017/11/09 Python
python实现雨滴下落到地面效果
2018/06/21 Python
Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法分析
2019/04/27 Python
Python简易版停车管理系统
2019/08/12 Python
Pandas操作CSV文件的读写实现方法
2019/11/13 Python
使用Numpy对特征中的异常值进行替换及条件替换方式
2020/06/08 Python
非凡女性奢华谦虚风格:The Modist
2017/10/28 全球购物
ghd官网:英国ghd直发器品牌
2018/05/04 全球购物
美国批发供应商:Kole Imports
2019/04/10 全球购物
美国排名第一的泳池用品直接来源:In The Swim
2019/09/23 全球购物
JSF的标签库有哪些
2012/04/27 面试题
职工年度考核评语
2014/12/31 职场文书
搞笑婚前保证书
2015/02/28 职场文书
地心历险记观后感
2015/06/15 职场文书
女方家长婚礼答谢词
2015/09/29 职场文书
Python爬取科目四考试题库的方法实现
2021/03/30 Python
python实现黄金分割法的示例代码
2021/04/28 Python
Promise面试题详解之控制并发
2021/05/14 面试题