En JavaScript, vous pouvez définir des fonctions anonymes qui sont exécutées immédiatement:
(function () { /* do something */ })()
Pouvez-vous faire quelque chose comme ça en PHP?
php
javascript
function
Emanuil Rusev
la source
la source
call_user_func(function(){/* stuff */})
faire?Réponses:
Pour PHP7: voir la réponse de Yasuo Ohgaki :
(function() {echo 'Hi';})();
Pour les versions précédentes: la seule façon de les exécuter immédiatement à laquelle je pense est
la source
call_user_func
C'est
PHP 7
de faire de même en javascriptLa sortie est:
la source
Bien sûr, vous pouvez utiliser
call_user_func
, mais il existe encore une autre alternative assez simple:la source
run
votre fonction dans une autre partie du code car il n'y a pas de descripteur de votre fonction existant après la ligne qui l'exécute immédiatement.run()
est d'exécuter immédiatement la fonction sans nom qui lui est passée. Identique àcall_user_func()
, aucun paramètre n'est transmis.$f();
et pourrait être plus rapide si le moteur que vous utilisez n'optimise pas pour le cas particulier oùcall_user_func
il n'y a qu'un seul argument de fonction. C'est parce quecall_user_func
prend en charge le passage de plusieurs paramètres et que son premier argument prend en charge une chaîne en tant qu'argument ou une fonction. Cela dit, sicall_user_func
c'est beaucoup plus lisible, je ne l'utiliseraisrun
que si le code est situé quelque part au bas de la pyramide .run
etcall_user_func
.call_user_func
a un inconvénient inhérent par rapport àrun
carrun
ne fait qu'une chose, alors quecall_user_func
prend en charge des fonctionnalités supplémentaires en plus de faire ce querun
fait. Vous pouvez essayer un test de boucle rapide ( par exemple ) pour voir lequel est le plus rapide sur votre moteur.C'est le plus simple pour PHP 7.0 ou version ultérieure.
Cela signifie créer une fermeture, puis l'appeler comme fonction en suivant "()". Fonctionne comme JS grâce à un ordre d'évaluation des variables uniforme.
https://3v4l.org/06EL3
la source
la source
Notez que la réponse acceptée est correcte mais cela prend 1,41x plus longtemps (41% plus lent) que de déclarer une fonction et de l'appeler sur deux lignes.
[Je sais que ce n'est pas vraiment une nouvelle réponse, mais j'ai pensé qu'il était utile de l'ajouter quelque part pour les visiteurs.]
Détails:
Résultats:
la source
Je l'ai essayé de cette façon, mais c'est plus verbeux que la réponse principale en utilisant n'importe quel opérateur (ou fonction) qui vous permet de définir la fonction en premier:
la source
$hack = function(){...}; $hack()
?Ce n'est pas une réponse directe, mais une solution de contournement. Utilisation de PHP> = 7. Définition d'une classe anonyme avec une méthode nommée et construction de la classe et appel immédiat de la méthode.
la source
Non exécuté immédiatement, mais proche de;)
la source