2012-04-08 31 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