我想在单个语句中为stdClass对象设置属性。
我对此一无所知。我知道以下几件事
$obj = new stdClass;
$obj->attr = 'loremipsum';
它需要两个语句。
$obj = (object) array('attr'=>'loremipsum');
它采用单个语句,但不是直接方法。
$obj = new stdClass(array('attr'=>'loremipsum'));
它不起作用。
最佳答案
$obj = (object) array(
'attr'=>'loremipsum'
);
实际上,这将是直接的。即使是自定义构造函数也无法在单个表达式中执行此操作。
(object)
强制转换实际上可能是数组的简单转换,因为内部属性也存储在哈希中。您可以创建这样的基类:
abstract class MyObject
{
public function __construct(array $attributes = array())
{
foreach ($attributes as $name => $value) {
$this->{$name} = $value;
}
}
}
class MyWhatever extends MyObject
{
}
$x = new MyWhatever(array(
'attr' => 'loremipsum',
));
这样做会锁定您的构造函数,要求每个类在被重写时都调用其父构造函数。
关于php - 如何在创建对象时为stdClass对象设置属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13761335/