PHP: функции обратного вызова - PullRequest
2 голосов
/ 25 октября 2010

Некоторые функции в PHP требуют функции обратного вызова.Как я могу сделать это в функции самостоятельно?Во-первых, как определить функцию, для которой требуется функция обратного вызова?

И, во-вторых, как я могу предоставить пользовательскую функцию в качестве функции обратного вызова?Как мне предоставить обычную функцию, функцию экземпляра и статическую функцию?

Ответы [ 4 ]

1 голос
/ 27 августа 2013

Вы можете использовать подсказку типа, чтобы заставить кого-то использовать переменную определенного типа.

function test(callable $test){
    echo __LINE__.PHP_EOL;
    $test();
    echo __LINE__.PHP_EOL;
}

test(function(){
    echo __LINE__.PHP_EOL;
});
1 голос
/ 25 октября 2010
function myFunc($param1, $param2, $callback) {
   $data = get_data($param1, $param2)
   $callback($data);
}
1 голос
/ 25 октября 2010

Используйте встроенный 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) a.k.a пройденный_требованием (прошедший_аргумент), потому что проверка, чтобы увидеть, существует ли эта функция на самом деле, для вас сделана, хотя некоторые прокомментировали снижение производительности по сравнению с $c($a).

0 голосов
/ 25 октября 2010

Это должно помочь:

http://php.net/manual/en/language.pseudo-types.php

...