我有一堆函数取决于变量,我希望能够做到这样的事情:
(它返回错误因此我无法解决的问题)
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()
}
答案 0 :(得分:1)
当然,你可以这样做:
$basename = "fetch";
$key = ...; // your logic for generating the rest of function's name
$functionName = $basename . $key;
$functionName(); // execute function
现在,棘手的部分是如果函数包含任意参数集。在这种情况下,您应该使用call_user_func_array
(docs)。
至于对象的创建,meagar在此解释,请明确如何实现。
P.S。事实上,这与Symfony2
几乎没有关系。这是一个纯粹的PHP
问题;)
答案 1 :(得分:0)
就个人而言,我使用方便的call_user_func_array()
函数:
<?php
$class = 'MyClassName';
$method = 'someMethod';
$parameters = array('foo', 'bar', 'baz');
call_user_func_array(array($class, $method), $parameters);
我想你需要在任何名称间隔的类名中转义反斜杠,即MCB\\MyClassName
。