如果一個常量類定義是這樣的:如何訪問常量沒有靜態的方式
class Example
{
const MIN_VALUE = 0.0; // RIGHT - Works INSIDE of a class definition.
}
就可以訪問這樣的常數:
Example::MIN_VALUE
,但如果你這樣做:
class Sample {
protected $example;
public function __construct(Example $example){
$this->example = $example;
}
public function dummyAccessToExampleConstant(){
//doesn't work -> syntax error, unexpected '::' (T_PAAMAYIM_NEKUDOTAYIM)
if($this->example::MIN_VALUE === 0.0){
}
//this works
$tmpExample = $this->example;
if($tmpExample::MIN_VALUE === 1){
}
}
}
有人可以解釋我這種行爲的原因嗎?
有一個很好的理由或者是它只是一個語言結構,以防止與訪問「::」
有沒有辦法如何訪問一個常量「$這個」
你已經重複我的示例代碼與其他變量名稱;-) – MadeOfSport 2014-12-02 22:06:54
這是故意的。 PHP不會讓我們在屬性訪問器' - >'之後引用'::'運算符。您必須首先將該屬性分配給一個變量,然後訪問該變量上的const。 – 2014-12-02 22:08:47
好的謝謝。你知道一些官方的php內部爲什麼沒有實現嗎? – MadeOfSport 2014-12-02 22:11:47