En JavaScript, puede definir funciones anónimas que se ejecutan inmediatamente:
(function () { /* do something */ })()
¿Puedes hacer algo así en PHP?
php
javascript
function
Emanuil Rusev
fuente
fuente

call_user_func(function(){/* stuff */})hago?Respuestas:
Para PHP7: vea la respuesta de Yasuo Ohgaki :
(function() {echo 'Hi';})();Para versiones anteriores: la única forma de ejecutarlas inmediatamente que se me ocurre es
fuente
call_user_funcEn
PHP 7es hacer lo mismo en javascript.La salida es:
fuente
Bueno, por supuesto que puede usar
call_user_func, pero todavía hay otra alternativa bastante simple:fuente
runa su función en alguna otra parte del código porque no existe un identificador para su función después de la línea que la ejecuta inmediatamente.run()es ejecutar inmediatamente la función sin nombre que se le ha pasado. Igual quecall_user_func(), solo que no se pasan parámetros.$f();y podría ser más rápido si el motor que usa no se optimiza para el caso especial dondecall_user_funcsolo tiene un argumento de función. Esto se debe a quecall_user_funcadmite el paso de múltiples parámetros y su primer argumento admite una cadena como argumento o una función. Dicho esto, sicall_user_funces mucho más legible, no lo usaría arunmenos que el código esté ubicado en algún lugar en la parte inferior de la pirámide .runycall_user_func.call_user_functiene una desventaja inherente en comparación conrunporquerunsolo hace una cosa, mientras quecall_user_funcadmite funciones adicionales además de hacer lo querunhace. Puede probar una prueba de bucle rápido ( por ejemplo ) para ver cuál es más rápido en su motor.Este es el más simple para PHP 7.0 o posterior.
Significa crear cierre, luego llamarlo como función siguiendo "()". Funciona igual que JS gracias al orden uniforme de evaluación de variables.
https://3v4l.org/06EL3
fuente
fuente
Tenga en cuenta que la respuesta aceptada está bien, pero tarda 1,41 veces más (41% más lento) que declarar una función y llamarla en dos líneas.
[Sé que no es una respuesta nueva, pero sentí que era valioso agregar esto en algún lugar para los visitantes].
Detalles:
Resultados:
fuente
Lo probé de esta manera, pero es más detallado que la respuesta principal al usar cualquier operador (o función) que le permita definir la función primero:
fuente
$hack = function(){...}; $hack()?Esta no es una respuesta directa, sino una solución. Usando PHP> = 7. Definir una clase anónima con un método con nombre y construir la clase y llamar al método de inmediato.
fuente
No se ejecuta de inmediato, pero cerca de;)
fuente