如何使用存储在变量中的类名创建新对象?

时间:2013-11-27 15:04:53

标签: php

我有一堆函数取决于变量,我希望能够做到这样的事情:
(它返回错误因此我无法解决的问题)

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()
}

2 个答案:

答案 0 :(得分:1)

当然,你可以这样做:

$basename = "fetch";
$key = ...; // your logic for generating the rest of function's name

$functionName = $basename . $key;
$functionName(); // execute function

现在,棘手的部分是如果函数包含任意参数集。在这种情况下,您应该使用call_user_func_arraydocs)。

至于对象的创建,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