2014-12-06 54 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

相关问题