2017-03-09 82 views
1

我想用這行代碼:訪問靜態variablefrom類實例

$this->ClassInstance::$StaticVariable; 

如果是這種基本設置:

Class foo{ 
    public static $StaticVariable; 
} 

$this->ClassInstance = new foo(); 

這是什麼是一個分析背後的原因錯誤?

當這樣的:

$ClassInstance = $this->ClassInstance; 
$ClassInstance::$StaticVariable; 

是完全有效的。

+1

請參閱https://wiki.php.net/rfc/uniform_variable_syntax –

回答

2

您可以self::$staticVariablefoo::$staticVariable訪問它。不需要使用實例。

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;