声明为static的属性无法使用实例化的类对象访问?

use*_*637 2 php oop

根据php文档http://php.net/manual/en/language.oop5.constants.php

声明为static的属性无法使用实例化的类对象进行访问

但以下示例是否表明您可以从对象访问静态属性$foo

class Foo{
    static $my_static = 'foo';
    function staticValue(){
        return self::$my_static;
    }        
}

$foo = new Foo();
echo $foo::$my_static;
Run Code Online (Sandbox Code Playgroud)

Rea*_*lar 5

这里的技巧是您使用范围解析运算符 ::它始终引用该类.如果你使用$ foo或$ this或self,这没关系.

Self是PHP中引用当前级别的关键字,但::可以在对象上使用以获取对该对象的类的引用.self ::与parent ::属于同一个关键字族,想想self ::想要访问对象当前级别的东西,而parent ::想要访问当前对象下面的东西.

因此,要访问类中定义的内容.PHP创建了::运算符.如果你只需要来自静态类的东西,那么你可以在类中使用self或在它之外使用对象引用.