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_func
En
PHP 7
es 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
run
a 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_func
solo tiene un argumento de función. Esto se debe a quecall_user_func
admite el paso de múltiples parámetros y su primer argumento admite una cadena como argumento o una función. Dicho esto, sicall_user_func
es mucho más legible, no lo usaría arun
menos que el código esté ubicado en algún lugar en la parte inferior de la pirámide .run
ycall_user_func
.call_user_func
tiene una desventaja inherente en comparación conrun
porquerun
solo hace una cosa, mientras quecall_user_func
admite funciones adicionales además de hacer lo querun
hace. 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