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出现Cannot modify header information问题的解决方法大全
Apr 09 PHP
php下使用curl模拟用户登陆的代码
Sep 10 PHP
php强制下载类型的实现代码
Apr 21 PHP
php中删除数组的第一个元素和最后一个元素的函数
Mar 07 PHP
PHP5.2下preg_replace函数的问题
May 08 PHP
php实现json编码的方法
Jul 30 PHP
详解WordPress中过滤链接与过滤SQL语句的方法
Dec 18 PHP
PHP简单实现数字分页功能示例
Aug 24 PHP
PHP入门教程之字符串处理技巧总结(转换,过滤,解析,查找,截取,替换等)
Sep 11 PHP
Yii2中多表关联查询hasOne hasMany的方法
Feb 15 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
Aug 30 PHP
php的instanceof和判断闭包Closure操作示例
Jan 26 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编程最快明白(第一讲 软件环境和准备工作)
2010/10/25 PHP
PHP Global定义全局变量使用说明
2013/08/15 PHP
php中base_convert()进制数字转换函数实例
2014/11/20 PHP
Dojo 学习笔记入门篇 First Dojo Example
2009/11/15 Javascript
深入理解javaScript中的事件驱动
2013/05/21 Javascript
JS实现让网页背景图片斜向移动的方法
2015/02/25 Javascript
JavaScript检查弹出窗口是否被阻拦的方法技巧
2015/03/13 Javascript
javascript实现简单的省市区三级联动
2015/05/14 Javascript
javascript实现状态栏中文字动态显示的方法
2015/10/20 Javascript
跟我学习javascript创建对象(类)的8种方法
2015/11/20 Javascript
jQuery Uploadify 上传插件出现Http Error 302 错误的解决办法
2015/12/12 Javascript
vue中如何实现变量和字符串拼接
2017/06/19 Javascript
使用AngularJS编写多选按钮选中时触发指定方法的指令代码详解
2017/07/24 Javascript
jQuery设置下拉框显示与隐藏效果的方法分析
2019/09/15 jQuery
关于layui的下拉搜索框异步加载数据的解决方法
2019/09/28 Javascript
uni-app从安装到卸载的入门教程
2020/05/15 Javascript
OpenLayers3实现鼠标移动显示坐标
2020/09/25 Javascript
解决Antd 里面的select 选择框联动触发的问题
2020/10/24 Javascript
Python编程入门之Hello World的三种实现方式
2015/11/13 Python
Django ModelForm操作及验证方式
2020/03/30 Python
css3翻牌翻数字的示例代码
2020/02/07 HTML / CSS
html5中去掉input type date默认样式的方法
2018/09/06 HTML / CSS
html5 跨文档消息传输示例探讨
2013/04/01 HTML / CSS
日本必酷网络直营店:Biccamera
2019/03/23 全球购物
C语言怎样定义和声明全局变量和函数最好
2013/11/26 面试题
护理自荐信
2013/10/22 职场文书
中餐厅主管的职责范文
2014/02/04 职场文书
医学生职业生涯规划书范文
2014/03/13 职场文书
优秀的2014年两会精神解读
2014/03/17 职场文书
三方协议书范本
2014/04/22 职场文书
湖南省党的群众路线教育实践活动总结会议新闻稿
2014/10/21 职场文书
面试通知短信
2015/04/20 职场文书
重温入党誓词主持词
2015/06/29 职场文书
公安干警正风肃纪心得体会
2016/01/15 职场文书
2019同学聚会主持词
2019/05/06 职场文书
Spring Cloud OpenFeign模版化客户端
2022/06/25 Java/Android