我想使用这行代码:
$this->ClassInstance::$StaticVariable;
这是基本设置:
Class foo{
public static $StaticVariable;
}
$this->ClassInstance = new foo();
这是解析错误背后的原因是什么?
当这个:
$ClassInstance = $this->ClassInstance;
$ClassInstance::$StaticVariable;
完全有效。
答案 0 :(得分:3)
假设你的意思
Class Foo{
public static $StaticVariable = 42;
}
class Bar {
private $ClassInstance;
public function fn() {
$this->ClassInstance = new Foo();
return $this->ClassInstance::$StaticVariable;
}
}
$bar = new Bar;
echo $bar->fn();
然后this works as of PHP7。在此之前,解析器可能根本不能解除引用。有关详细信息,请参阅wiki page linked in the comments to your question。
你可以使用get_class($this->ClassInstance)::$StaticVariable;
。
答案 1 :(得分:2)
在PHP文档中
将类属性或方法声明为静态使它们可以访问,而无需实例化类。声明为static的属性无法使用实例化的类对象访问(尽管静态方法可以)。
答案 2 :(得分:2)
您可以使用self::$staticVariable
或foo::$staticVariable
访问它。无需使用该实例。