是否可以动态添加成员到PHP对象?

时间:2012-06-26 17:50:38

标签: php

是否可以动态添加到PHP对象?说我有这段代码:

$foo = stdObject();
$foo->bar = 1337;

这是有效的PHP吗?

4 个答案:

答案 0 :(得分:3)

这在技术上是无效的代码。尝试类似:

$foo = new stdClass();
$foo->bar = 1337;
var_dump($foo);

http://php.net/manual/en/language.types.object.php

答案 1 :(得分:3)

有效,只要您使用有效的类stdClass而不是stdObject

$foo = new stdClass();
$foo->bar = 1337;
echo $foo->bar; // outputs 1337

您遇到了这些问题:

  • 使用stdObject代替stdClass
  • 未使用new关键字
  • 实例化您的对象

更多信息:

答案 2 :(得分:0)

是的。您的代码中唯一的问题是在调用new之前缺少stdClass,而您使用的是stdObject,但您的意思是stdClass

<?php
class A {
    public $foo = 1;
}  

$a = new A;
$b = $a;     // $a and $b are copies of the same identifier
             // ($a) = ($b) = <id>
$b->newProp = 2;
echo $a->newProp."\n";

答案 3 :(得分:0)

你关闭了。

$foo = stdObject();

这需要:

$foo = new stdClass();

然后它会起作用。