2011-06-21 46 views
5

我將用一個簡單的函數接受任何數目的功能轉發不確定數量的參數給另一個函數

function abc() { 
    $args = func_get_args(); 
    //Now lets use the first parameter in something...... In this case a simple echo 
    echo $args[0]; 
    //Lets remove this first parameter 
    unset($args[0]); 

    //Now I want to send the remaining arguments to different function, in the same way as it received 
    .. . ...... BUT NO IDEA HOW TO . .................. 

    //tried doing something like this, for a work around 
    $newargs = implode(",", $args); 
    //Call Another Function 
    anotherFUnction($newargs); //This function is however a constructor function of a class 
    //^This is regarded as one arguments, not mutliple arguments.... 

} 

我希望這個問題是清楚了吧,什麼是周圍的工作對於這種情況說明問題嗎?

更新

我忘了提,我打電話的下一個函數是一個構造類另一個類的。 喜歡的東西

$newclass = new class($newarguments); 
+1

發送其餘的參數作爲數組不是可接受的解決方案。我想發送參數的方式與「arg [1],arg [2] ..等等一樣...... – Starx

回答

12

簡單的函數調用

使用call_user_func_array,但不破滅的指定參數時,只剩餘args來數組傳遞給call_user_func_array

call_user_func_array('anotherFunction', $args); 

對象創建

使用:ReflectionClass::newInstanceArgs

$refClass = new ReflectionClass('yourClassName'); 
$obj = $refClass->newInstanceArgs($yourConstructorArgs); 

或:ReflectionClass::newinstance

$refClass = new ReflectionClass('yourClassName'); 
$obj = call_user_func_array(array($refClass, 'newInstance'), $yourConstructorArgs); 
+0

如果下一個函數是類的構造函數會怎麼樣? – Starx

+0

@Starx請參閱添加例如 – Yoshi

+0

對於創建對象,哪一個是首選解決方案,第一個或第二個 – Starx

相關問題