类与对象:范围解析操作符(::)

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

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

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

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

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

<?php

class MyClass {

    const CONST_VALUE = 'A constant value';

}

$classname = 'MyClass';

echo $classname::CONST_VALUE; // 自 PHP 5.3.0 起

echo MyClass::CONST_VALUE;

?>  

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

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

<?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 不会调用父类中已被覆盖的方法。是否调用父类的方法取决于子类。这种机制也作用于构造函数和析构函数,重载以及魔术方法。 

Example #3 调用父类的方法

<?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();

?>  

参见 $this 伪变量的示例。 


点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

热门产品

历史上的今天:03月28日

热门专题

昆明综合高中|昆明综合高中
昆明综合高中
APP开发|app开发_app开发公司_app软件开发_专业app开发_云南app开发公司_app定制_原生app开发定制
APP开发
自考本科|自考本科有用吗,自考文凭,自考本科文凭,自考文凭有用吗,自考本科文凭有用吗,自考文凭承认吗
自考本科
易捷尔高职单招|易捷尔高职单招,易捷尔高职单招培训,单招分数线,单招录取分数线,高职单招学校分数线
易捷尔高职单招
一年制中专|中专学历,中专是什么学历,中专是什么,中专有什么专业,中专升大专,一年制中专
一年制中专
小程序开发|微信小程序,小程序开发,小程序,小程序制作,微信小程序开发,小程序公司,小程序开发公司,分销,三级分销系统,分销系统
小程序开发
天麻的功效与作用吃法|天麻的功效与作用,天麻的功效与作用吃法,天麻炖什么治头痛最好,天麻的功效与作用禁忌,天麻多少钱一斤,天麻的功效与作用吃法及禁忌,天麻怎么吃效果最好,天麻粉的功效与作用,天麻怎么吃
天麻的功效与作用吃法
云南高职单招|云南单招,云南单招网,云南高职单招网,云南高职单招,云南单招学校,云南单招培训
云南高职单招

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部