服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - PHP教程 - PHP 范围解析操作符(::)用法分析【访问静态成员和类常量】

PHP 范围解析操作符(::)用法分析【访问静态成员和类常量】

2020-05-27 12:10Ryan_zheng PHP教程

这篇文章主要介绍了PHP 范围解析操作符(::)用法,结合具体实例形式分析了PHP使用范围解析操作符(::)访问静态成员和类常量相关操作技巧与注意事项,需要的朋友可以参考下

本文实例讲述了PHP 范围解析操作符(::)用法。分享给大家供大家参考,具体如下:

范围解析操作符 (::)

范围解析操作符(也可称作 Paamayim Nekudotayim)或者更简单地说是一对冒号,可以用于访问静态成员,类常量,还可以用于覆盖类中的属性和方法。

当在类定义之外引用到这些项目时,要使用类名。

自 PHP 5.3.0 起,可以通过变量来引用类,该变量的值不能是关键字(如 self,parent 和 static)。

把 Paamayim Nekudotayim 选作双冒号操作符的名字似乎有些奇怪。然而,这是 Zend 开发小组在写 Zend Engine 0.5(被用于 PHP 3 中)时所作出的决定。事实上这个词在希伯莱文就是双冒号的意思。

在类的外部使用  ::

self,parent 和 static 这三个特殊的关键字是用于在类定义的内部对其属性或方法进行访问的。

?
1
2
3
4
5
6
7
8
9
<?php
class MyClass {
  const CONST_VALUE = 'A constant value';
}
 
$classname = 'MyClass';
echo $classname::CONST_VALUE; // 自 PHP 5.3.0 起
 
echo MyClass::CONST_VALUE;

在类定义的内部使用 ::

当一个子类覆盖其父类中的方法时,PHP 不会调用父类中已被覆盖的方法。是否调用父类的方法取决于子类。这种机制也作用于构造函数和析构函数,重载以及魔术方法。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?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();

调用父类的方法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?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程序设计有所帮助。

原文链接:https://www.cnblogs.com/ryanzheng/p/11405699.html

延伸 · 阅读

精彩推荐