Является ли способ в 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
но здесь я не хочу передавать имя функции (как строку), я хочу передать эту функцию (как видно из кода выше)
Благодарю!
Вы можете передать имя функции в виде строки и вызвать ее.
function execute($func, $paramsArr)
{
$func($paramsArr[0], $paramsArr[1]);
}
function func($par1, $par2)
{
echo $par1." ".$par2;
}
execute('func' , array('a','b'));
call_user_func_array выполнит работу
$func = function($a, $b) {
return $a+$b;
};
echo call_user_func_array($func, [1, 2]); // 3
I know about call_user_func_array but here I don't want to pass the name of the function (as string), I want to pass the function itself (as seen in the code above)
. Так что это не ответ на вопрос
call_user_func_array
- любой вызываемый, поэтому вы можете передать ему функцию, а не только имя.