2012-04-08 26 views
-2

我們可以執行以下操作嗎?在PHP中訪問類中的成員PHP

class a{ 
    public $id; 
} 

我們可以訪問這個領域像這樣的東西,

$x='id'; 
$aObj=new a(); 
$aObj->$x=1;//or $aObj->"id"=1 
+0

你試過了嗎? '$ aObj - > {$ x}' – safarov 2012-04-08 11:07:03

+0

[TIAS](http://www.urbandictionary.com/define.php?term=TIAS) – 2012-04-08 11:09:56

+0

你問是否可以或者你問,因爲它沒有爲你工作?在你問這裏問題之前,你應該真的測試一下。是的,這是可能的。 – Broncha 2012-04-08 11:10:24

回答

1

這應該是可能的:

class a { 
    public $id; 

    function getId() { 
     return $this->id; 
    } 
} 

$x = 'id'; 
$aObj = new a(); 
$aObj->$x = 500; 

echo $aObj->id, " ", $aObj->getId(); 

給出:500 500(測試用PHP 5.3)

+1

這是PHP的_any_版本,包括PHP 4(提供的類定義是製作兼容)。 – MrWhite 2012-04-08 11:34:03

2

是,你可以,但不鼓勵。

使用類似$aObj->"id"=1只是把名字放在括號

$aObj->{"id"} = 1;

如果你問這是爲什麼沮喪,很簡單:它是不可預測的,難以維護。

+0

「不鼓勵」 - 你有參考嗎?請注意,如果屬性名稱保存在一個變量中(如OP中那樣),則需要注意花括號。 – MrWhite 2012-04-08 11:29:27

+0

@ w3d這是不可預知的,不可維護的。 – 2012-04-08 11:32:10