Некоторые функции в PHP требуют функции обратного вызова. Как я могу сделать это в функции самостоятельно? Прежде всего, как определить функцию, которая требует функции обратного вызова?
И, во-вторых, как мне настроить пользовательскую функцию как функцию обратного вызова? Как предоставить регулярную функцию, функцию экземпляра и статическую функцию?
Используйте встроенный call_user_func () . Может быть необходимо использовать call_user_func_array ()
function work($a, $c) { $a = filter($a) if(!is_callable($c) || !call_user_func($c, $a)) { return 0; // throw error } else { return 1; // return success } }
Это безопаснее, чем просто делать $c($a)
aka pass_callback (pass_argument), потому что проверка на то, действительно ли функция существует, выполняется для вас, хотя некоторые из них прокомментировали снижение производительности по сравнению с $c($a)
.
function myFunc($param1, $param2, $callback) { $data = get_data($param1, $param2) $callback($data); }
Вы можете использовать тип hinting, чтобы заставить кого-то использовать определенный тип переменной.
function test(callable $test){ echo __LINE__.PHP_EOL; $test(); echo __LINE__.PHP_EOL; } test(function(){ echo __LINE__.PHP_EOL; });
Это должно помочь: