我正在为我的项目使用自动代码生成器。 我使用Zend Framework 2进行文件/类/方法反射。 我需要向返回的数组添加元素:
public function getServiceConfig()
{
return array(
'factories' => array(
'Album\Model\AlbumTable' => function($sm) {
$tableGateway = $sm->get('AlbumTableGateway');
$table = new AlbumTable($tableGateway);
return $table;
},
'AlbumTableGateway' => function ($sm) {
$dbAdapter = $sm->get('Zend\Db\Adapter\Adapter');
$resultSetPrototype = new ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new Album());
return new TableGateway('album', $dbAdapter, null, $resultSetPrototype);
},
),
);
}
我可以找到工厂'数组,但不能添加新元素(函数)。 (我需要向工厂添加新元素,例如"' objectTableGateway' => function($ sm){...}") 之后我编写方法体,如body = var_export(array,true);
如何解决这个问题?
我看到的唯一解决方案是生成整个方法体作为纯文本
答案 0 :(得分:0)
$arr = array(
'factories' => array(
'Album\Model\AlbumTable' => function($sm) {
echo $sm;
},
'AlbumTableGateway' => function ($sm) {
echo $sm;
},
));
$arr['factories']['Album\Model\AlbumTable']("Test");
这似乎对我有用。你如何执行这个功能?
$arr['factories']['NewFunction'] = function($sm) {
echo $sm . $sm;
};
$arr['factories']['NewFunction']("test");
即时添加新的也可以。你也可以循环使用它们
foreach($arr["factories"] as $function) {
$function("TEST2");
}