2014-01-20 70 views
3

在PHP中訪問成員的名稱由類常量指定的對象的成員可能嗎?PHP對象訪問類常量

考慮這個例子:

class X{ 
    const foo = "abc"; 
} 

class Y{ 
    public $abc; 
} 

$y = new Y(); 

$y->X::foo = 23; //This does not work 

解析器不接受的最後一行,但是這就是我想要的。我想訪問存儲在類常量X::foo中的名稱的字段。有沒有一種語法來實現這一點?

+0

@MarkusMalkusch作爲變量變量已經成爲PHP的一部分,因爲上帝知道他們被PhpStorm等主流IDE所支持的時間長短。 –

回答

5

使用variable variables,或者通過一個臨時或直接:

$name = X::foo;   // Via temp var 
$y->$name = 23;   // Access the member by the string's content 
var_dump($y->{X::foo}); // Dumps 23 

Working sample here

3

你應該寫你這樣的代碼

$y->{X::foo} = 23; 

希望它可以幫助