2

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

不能用实例化的类对象访问声明为静态的属性

但是下面的示例不是表明您可以从对象访问静态属性$foo吗?

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

$foo = new Foo();
echo $foo::$my_static;
4

1 回答 1

5

这里的诀窍是您正在使用范围解析运算符:: ,它始终引用该类。使用 $foo 或 $this 或 self 都没有关系。

Self 是 PHP 中引用当前级别的关键字,但 :: 可以在对象上使用以获取对该对象的类的引用。self:: 与 parent:: 属于同一关键字族,将 self:: 视为想要访问对象当前级别的某些内容,而 parent:: 视为想要访问当前对象下方的某些内容。

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

于 2013-01-15T05:08:19.997 回答