php范围解析操作符(::)

伊谢尔伦
Libérer: 2016-11-23 14:13:35
original
1124 Les gens l'ont consulté

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

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

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

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

Example #1 在类的外部使用 :: 操作符

class MyClass
{
    const CONST_VALUE = 1;
}
$classname = 'MyClass';
echo $classname::CONST_VALUE; //自PHP5.3.0起
echo MyClass::CONST_VALUE;
Copier après la connexion

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

Example #2 在类定义内部使用 ::

function __autoload($classname){
    require_once($classname.".php");
}
class OtherClass extends MyClass
{
    public static $my_static = 1;
    public static function doubleColon(){
        echo parent::CONST_VALUE.&#39;<br>&#39;;
        echo self::$my_static,&#39;<br>&#39;;
    }
}
$classname = &#39;OtherClass&#39;;
echo $classname::doubleColon();
OtherClass::doubleColon();
Copier après la connexion

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

Example #3 调用父类的方法

class MyClass
{
    protected function myFunc()
    {
        echo &#39;MyClass::myFunc()<br>&#39;;
    }
}
class OtherClass extends MyClass
{
    //覆盖了父类的定义
    public function myFunc()
    {
        //但还是可以调用父类中被覆盖的方法
        parent::myFunc();
        echo &#39;OtherClass::myFunc()<br>&#39;;
    }
}
$class = new OtherClass();
$class -> myFunc();
Copier après la connexion

输出结果:

MyClass::myFunc()

OtherClass::myFunc()


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!