In JavaScript können Sie anonyme Funktionen definieren, die sofort ausgeführt werden:
(function () { /* do something */ })()
Können Sie so etwas in PHP machen?
php
javascript
function
Emanuil Rusev
quelle
quelle
call_user_func(function(){/* stuff */})
das?Antworten:
Für PHP7: siehe Yasuo Ohgakis Antwort :
(function() {echo 'Hi';})();
Für frühere Versionen: Die einzige Möglichkeit, sie sofort auszuführen, ist die, an die ich denken kann
quelle
call_user_func
In
PHP 7
ist das gleiche in Javascript zu tunDie Ausgabe ist:
quelle
Natürlich können Sie verwenden
call_user_func
, aber es gibt noch eine andere ziemlich einfache Alternative:quelle
run
Ihre Funktion in einem anderen Teil des Codes nicht aufrufen, da nach der Zeile, die sie sofort ausführt, kein Handle für Ihre Funktion vorhanden ist.run()
besteht darin, die an ihn übergebene unbenannte Funktion sofort auszuführen. Escall_user_func()
werden nur keine Parameter übergeben.$f();
und ist möglicherweise schneller, wenn die von Ihnen verwendete Engine nicht für den Sonderfall optimiert wird, in demcall_user_func
nur ein Funktionsargument vorhanden ist. Dies liegt daran, dasscall_user_func
die Übergabe mehrerer Parameter unterstützt wird und das erste Argument entweder eine Zeichenfolge als Argument oder eine Funktion unterstützt. Das heißt, wenncall_user_func
es gut lesbar ist, würde ich es nur verwenden,run
wenn sich der Code irgendwo unten in der Pyramide befindet .run
undcall_user_func
.call_user_func
hat einen inhärenten Nachteil im Vergleich zurun
weilrun
nur eine Sache tut, währendcall_user_func
zusätzliche Funktionen zusätzlich zu dem, wasrun
tut, unterstützt. Sie können einen schnellen Schleifentest ( z. B. ) durchführen, um festzustellen, welcher Motor schneller ist.Dies ist die einfachste Version für PHP 7.0 oder höher.
Es bedeutet, einen Abschluss zu erstellen und ihn dann als Funktion aufzurufen, indem Sie "()" folgen. Funktioniert genau wie JS dank einheitlicher variabler Auswertungsreihenfolge.
https://3v4l.org/06EL3
quelle
quelle
Hinweis, akzeptierte Antwort in Ordnung ist, aber 1,41x so lange dauert (41% langsamer) als das Deklarieren einer Funktion und das Aufrufen in zwei Zeilen.
[Ich weiß, dass es keine wirklich neue Antwort ist, aber ich fand es wertvoll, diese irgendwo für Besucher hinzuzufügen.]
Einzelheiten:
Ergebnisse:
quelle
Ich habe es auf diese Weise ausprobiert, aber es ist ausführlicher als die oberste Antwort, wenn Sie einen Operator (oder eine Funktion) verwenden, mit dem Sie die Funktion zuerst definieren können:
quelle
$hack = function(){...}; $hack()
?Dies ist keine direkte Antwort, sondern eine Problemumgehung. Verwenden von PHP> = 7. Definieren einer anonymen Klasse mit einer benannten Methode, Erstellen der Klasse und sofortiges Aufrufen der Methode.
quelle
Nicht sofort ausgeführt, aber in der Nähe von;)
quelle