PHP添加函数到数组而不执行


PHP add function to array without executing

我正在为我的项目使用自动代码生成器。我使用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);

  1. 如果我添加引号-我需要在代码写入文件后手动清理引号。

如何解决这个问题?

我看到的唯一解决方案是生成整个方法体作为纯文本

$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");
 }