我正在为我的项目使用自动代码生成器。我使用Zend框架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);
},
),
);
}
我可以得到'工厂'数组,但不能添加新的元素(函数)。(我需要添加新的元素到工厂,如"' objecttableggateway ' => function($sm){…}")之后,我写方法体像body = var_export(array, true);
- 如果我添加引号-我需要在代码写入文件后手动清理引号。
如何解决这个问题?
我看到的唯一解决方案是生成整个方法体作为纯文本
$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");
}