2013-11-27 52 views
1

我有一堆取決於變量的函數,我希望能夠做這樣的事情:
(它返回一個錯誤,所以我不能要解決的問題)如何使用存儲在變量中的類名創建新對象?

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

回答

1

當然,你可以這樣做:

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

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

現在,棘手的部分是如果函數包含任意一組參數。在這種情況下,您應該使用call_user_func_array()。

至於創建對象,meagar請在這裏解釋清楚如何實現。

P.S.實際上,這與Symfony2幾乎沒有關係。這是一個純粹的PHP問題;)

+0

謝謝。試驗和錯誤工作完美地爲我節省了數百行代碼。 Ps:symfony2 ...那只是上下文 –

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

相關問題