我的问题类似于:Creating anonymous objects in php
不同之处在于我希望无名类扩展一个类。
编辑:好的,不清楚,这是一个例子:
$anonim_obj = new stdClass(array(
"foo" => function() { echo "foo"; },
"bar" => function($bar) { echo $bar; }
));
我想以某种方式:
$anonim_obj = new stdClass extends BaseClass (array(
"foo" => function() { echo "foo"; },
"bar" => function($bar) { echo $bar; }
));
答案 0 :(得分:1)
您尝试做的是 impossibru!。无法完成,无法完成。忘掉它。结束。
匿名对象确实是stdClass
的一个实例,但您无法对其进行内联扩展。但是,你可以做的是创建一个你希望stdClass
扩展的基类的实例,并重载它(这是一个坏主意IMO,但它是可能的):
$anonObj = new BaseClass();//create "parent" instance
$anonObj->foo = function()
{
echo 'foo';
};
$anonObj->bar = function($bar)
{
echo $bar;
};
原因为什么我认为"重载" 是一个坏主意是因为:
底线:如果你想让一个对象扩展你的BaseClass
,并且有两个额外的方法:只要编写一个血腥的类,不要试图从定制的对象中扩展通用对象。