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 相关文章推荐
Windows Apache2.2.11及Php5.2.9-1的安装与配置方法
Jun 08 PHP
PHP计数器的实现代码
Jun 08 PHP
php配置php-fpm启动参数及配置详解
Nov 04 PHP
Php-Redis安装测试笔记
Mar 05 PHP
smarty循环嵌套用法示例分析
Jul 19 PHP
一个简单的php MVC留言本实例代码(必看篇)
Sep 22 PHP
PHP面相对象中的重载与重写
Feb 13 PHP
PHP后台实现微信小程序登录
Aug 03 PHP
PHP7.3.10编译安装教程
Oct 08 PHP
laravel返回统一格式错误码问题
Nov 04 PHP
解决windows上php xdebug 无法调试的问题
Feb 19 PHP
PHP网站常见安全漏洞,及相应防范措施总结
Mar 01 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静态变量当缓存的方法
2013/11/13 PHP
PHP中的reflection反射机制测试例子
2014/08/05 PHP
PHP之密码加密的几种方式
2015/07/29 PHP
PHP读取大文件的多种方法介绍
2016/04/04 PHP
Smarty模板常见的简单应用分析
2016/11/15 PHP
取得传值的函数
2006/10/27 Javascript
JavaScript中的new的使用方法与注意事项
2007/05/16 Javascript
javascritp实现input输入框相关限制用法
2007/06/29 Javascript
JavaScript 申明函数的三种方法 每个函数就是一个对象(一)
2009/12/04 Javascript
在网页中使用document.write时遭遇的奇怪问题
2010/08/24 Javascript
jquery插件制作 图片走廊 gallery
2012/08/17 Javascript
可在线编辑网页文字效果代码(单击)
2013/03/02 Javascript
JS仿iGoogle自定义首页模块拖拽特效的方法
2015/02/13 Javascript
js判断图片加载完成后获取图片实际宽高的方法
2016/02/25 Javascript
使用PHP+JavaScript将HTML页面转换为图片的实例分享
2016/04/18 Javascript
AngularJS中的JSONP实例解析
2016/12/01 Javascript
js实现滑动到页面底部自动加载更多功能
2017/02/15 Javascript
AngularJS 验证码60秒倒计时功能的实现
2017/06/05 Javascript
通过jquery.cookie.js实现记住用户名、密码登录功能
2018/06/20 jQuery
JS 封装父页面子页面交互接口的实例代码
2019/06/25 Javascript
python中while循环语句用法简单实例
2015/05/07 Python
python3.6.3安装图文教程 TensorFlow安装配置方法
2020/06/24 Python
Python3多线程基础知识点
2019/02/19 Python
python爬取微信公众号文章的方法
2019/02/26 Python
Django模板获取field的verbose_name实例
2020/05/19 Python
10种CSS3实现的loading动画,挑一个走吧?
2020/11/16 HTML / CSS
自我鉴定书范文
2013/10/02 职场文书
计算机应用职专应届生求职信
2013/11/12 职场文书
网站客服岗位职责
2014/04/05 职场文书
2015年小学数学教师个人工作总结
2015/05/25 职场文书
幼儿园亲子活动感想
2015/08/07 职场文书
2016国庆促销广告语
2016/01/28 职场文书
用人单位的规章制度,怎样制定才是有效的?
2019/07/09 职场文书
利用ajax+php实现商品价格计算
2021/03/31 PHP
浅谈 JavaScript 沙箱Sandbox
2021/11/02 Javascript
P站美图推荐——变身女主角特辑
2022/03/20 日漫