PHP функция, которая выполняет предоставленную функцию с предоставленными аргументами

0

Является ли способ в 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 - любой вызываемый, поэтому вы можете передать ему функцию, а не только имя.
  • 0
    даже если это не в одном файле? второй аргумент это массив аргументов?
Показать ещё 2 комментария
Теги:

2 ответа

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
    Почему это понижено?
  • 0
    Я понизил это, потому что OP сказал следующее: 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) . Так что это не ответ на вопрос

Ещё вопросы

Сообщество Overcoder
Наверх
Меню