首页 > 解决方案 > 使用数组中的参数调用 Symfony 存储库方法

问题描述

symfony 3.4

我必须调用一个函数

$this->em->getRepository($info['repoName'])->$info['funcName']->(//params

问题是我的函数有像昏迷这样的参数

functionName($param1, $param2);

我在 $arr['params'] 中收到一个包含此参数值的数组非常重要!我将无法像这样调用它,functionName($arr['params'][0], $arr['params'][1])因为我永远不会知道使用了哪个 repo 中的哪个函数以及它有多少参数,所有信息都存储在 yml 中,从那里获取,数据只是在其他函数中找到并刚刚通过这里。各位大侠请注意——这是动态的,数组中可能有任意数量的参数,当然与函数中的参数相同,但是当参数应该用逗号指定并且我有一个数组时如何调用函数?

标签: phparrayssymfonyparameters

解决方案


根据您的 PHP 版本,有不同的方法。我个人更喜欢参数解包,也称为 splat-operator:

$this->em->getRepository($info['repoName'])->$info['funcName']->(...$info['params']);

此功能在 PHP 5.6 中引入,请参阅:https ://secure.php.net/manual/en/migration56.new-features.php#migration56.new-features.splat

另一种常见的方法是call_user_func_array在你提供一个可调用的地方,以便在哪个对象上调用什么方法,然后是一个参数数组。在您的情况下,它可能看起来像这样:

call_user_func_array([$this->em->getRepository($info['repoName']), $info['funcName']], $info['params']);

推荐阅读