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

时间:2013-01-15 05:01:32

标签: 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;

1 个答案:

答案 0 :(得分:5)

这里的诀窍是你使用scope resolution operator ::它总是引用这个类。如果你使用$ foo或$ this或self。无关紧要。

Self是PHP中引用当前级别的关键字,但::可以在对象上使用::来获取对该对象的类的引用。 self ::与parent ::属于同一个关键字系列,想想self ::想要访问某个对象的当前级别的东西,而parent ::想要访问某些东西< em>低于当前对象。

因此,要访问类中定义的内容。 PHP创建了::运算符。如果您只需要静态类中的某些东西,那么您可以在类中使用self或在其外部使用对象引用。