"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso usar retornos de chamada de maneira eficaz em PHP?

Como posso usar retornos de chamada de maneira eficaz em PHP?

Publicado em 2024-11-09
Navegar:266

How Can I Use Callbacks Effectively in PHP?

Implementando callbacks em PHP

O termo "callback" em PHP abrange strings e arrays que operam como ponteiros de função. No PHP 4, surgiu a seguinte sintaxe:

  • $cb1 = 'someGlobalFunction';
  • $cb2 = ['ClassName', 'someStaticMethod'];
  • $cb3 = [$object, 'somePublicMethod'];

Embora o PHP 5.2.3 tenha introduzido sintaxe chamável, strings contendo tal sintaxe não podem ser invocadas diretamente. A sintaxe legada para PHP 4 inclui:

  • $cb3 = array(&$object, 'somePublicMethod');

O trecho de código a seguir demonstra o uso seguro de valores que podem ser chamados :

if (is_callable($cb2)) {
    $returnValue = call_user_func($cb2, $arg1, $arg2);
}

As versões modernas do PHP suportam a invocação dos três primeiros formatos acima diretamente como $cb(). Além disso, call_user_func e call_user_func_array suportam todos os formatos apresentados.

Notas e advertências:

  • Funções/classes com namespace requerem nomes totalmente qualificados, por exemplo. ['Vendor\Package\Foo', 'method'].
  • call_user_func não suporta a passagem de não-objetos por referência. Use call_user_func_array ou $cb(); em versões posteriores do PHP.
  • Objetos com um método __invoke() (incluindo funções anônimas) podem ser usados ​​como retornos de chamada, mas normalmente não são associados ao termo tradicional de "retorno de chamada".
  • Legacy create_function () cria uma função global e retorna seu nome. Em vez disso, use funções anônimas.
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3