我有一堆依赖于变量的函数,我希望能够做这样的事情:
(它返回一个错误,因此我无法解决这个问题)
function($x) {
fetch.$x.() // if x=Name I would like it to execute fetchName()...and so on
}
和类似的东西
function($x) {
$article = new 'Cc'WebBundle'Entity'$X();
// if x='name' to be executed Cc'WebBundle'Entity'name()
}
当然,你可以做到:
$basename = "fetch";
$key = ...; // your logic for generating the rest of function's name
$functionName = $basename . $key;
$functionName(); // execute function
现在,棘手的部分是函数是否包含任意的参数集。在这种情况下,您应该使用call_user_func_array
(文档)。
至于物体的创造,米查尔在这里解释了请明确如何实现这一点。
附言:事实上,这与Symfony2
几乎没有关系。这是一个纯粹的PHP
问题;)
就我个人而言,我使用方便的call_user_func_array()
函数,如下所示:
<?php
$class = 'MyClassName';
$method = 'someMethod';
$parameters = array('foo', 'bar', 'baz');
call_user_func_array(array($class, $method), $parameters);
不过,我想您需要在任何名称间隔的类名中转义回斜杠,即MCB''MyClassName
。