2014-12-06 91 views
0

是一種在php中創建函數的方法,該函數使用提供的參數(提供的函數 - 作爲數組)執行提供的函數(作爲參數)。使用提供的參數執行提供的函數的PHP函數

下面是一些代碼:

class Worker 
{ 
    public function execute($func, $paramsArr) 
    { 
     php_func_executer($func, $paramsArr); //the function that I would like to have 
    } 
} 

在其他PHP文件我會做如下:

Class SomeClass 
{ 
    public function test($varA, $varB) 
    { 
     //do something 
    } 

    public function exeText() 
    { 
     ... 
     $worker = new Worker(); 
     $worker->execute(test, [$varA, $varB]); 
    } 
} 

我知道call_user_func_array但在這裏我並不想傳遞的名稱函數(如字符串),我想通過函數本身(如上面的代碼所示)

謝謝!

+4

'call_user_func_array'的第一個參數是任何可調用的,所以你可以傳遞一個函數給它,而不只是名字。 – 2014-12-06 17:39:15

+0

即使它不在同一個文件中?第二個參數是一個參數數組? – vlio20 2014-12-06 17:40:26

+0

你應該通過傳遞函數來解釋你的意思嗎?你不想傳遞函數名字符串,那麼你想傳遞什麼 - 數組?用匿名函數變量還是什麼? – 2014-12-06 17:44:38

回答

1

你可以通過函數名作爲一個字符串,並調用它。

function execute($func, $paramsArr) 
    { 
     $func($paramsArr[0], $paramsArr[1]); 
    } 

function func($par1, $par2) 
    { 
     echo $par1." ".$par2; 
    } 


execute('func' , array('a','b')); 
1

call_user_func_array將做的工作

$func = function($a, $b) { 
    return $a+$b; 
}; 

echo call_user_func_array($func, [1, 2]); // 3 
+0

這是爲什麼downvoted? – Rangad 2014-12-06 17:52:17

+0

我低估了這個,因爲OP說:「我知道call_user_func_array,但在這裏我不想傳遞函數的名字(字符串),我想傳遞函數本身(如上面的代碼所示)。所以這不是對這個問題的回答 – DarkBee 2014-12-07 10:42:07

相關問題