"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo utilizar devoluciones de llamada de forma eficaz en PHP?

¿Cómo puedo utilizar devoluciones de llamada de forma eficaz en PHP?

Publicado el 2024-11-09
Navegar:836

How Can I Use Callbacks Effectively in PHP?

Implementación de devoluciones de llamada en PHP

El término "devolución de llamada" en PHP abarca tanto cadenas como matrices que operan como punteros de función. En PHP 4, surgió la siguiente sintaxis:

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

Aunque PHP 5.2.3 introdujo una sintaxis invocable, las cadenas que contienen dicha sintaxis no se pueden invocar directamente. La sintaxis heredada para PHP 4 incluye:

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

El siguiente fragmento de código demuestra el uso seguro de valores invocables :

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

Las versiones modernas de PHP admiten la invocación de los primeros tres formatos anteriores directamente como $cb(). Además, call_user_func y call_user_func_array admiten todos los formatos presentados.

Notas y advertencias:

  • Las funciones/clases con espacios de nombres requieren nombres completos, p. ['Vendor\Package\Foo', 'método'].
  • call_user_func no admite el paso de objetos que no son objetos por referencia. Utilice call_user_func_array o $cb(); en versiones posteriores de PHP.
  • Los objetos con un método __invoke() (incluidas funciones anónimas) se pueden utilizar como devoluciones de llamada, pero normalmente no se asocian con el término tradicional "devolución de llamada".
  • Create_function heredado () crea una función global y devuelve su nombre. Utilice funciones anónimas en su lugar.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3