Wie alias, eine Funktion in PHP?
Ist es möglich, alias eine Funktion mit einem anderen Namen in PHP? Nehmen wir an, wir haben eine Funktion mit dem Namen sleep
. Gibt es eine Möglichkeit, einen alias namens wait
?
Durch jetzt mache ich so:
function wait( $seconds ) {
sleep($seconds);
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
PHP 5.6+ nur
Beginnend mit PHP 5.6 es ist möglich alias eine Funktion, die von importieren:
foo
eines vorhandenen Objekts mit dem Namenbar
Aufruf einer statischen Methodefoo
einer Klasse mit dem Namenbar
oder etwas anderes? Für die beiden Fälle, die ich erwähnt, die kurze Antwort ist, können Sie nicht.use (function) X as Y
.Bis PHP 5.5
yup,
function wait ($seconds) { sleep($seconds); }
ist der Weg zu gehen. Aber, wenn Sie sind besorgt darüber, dass zu ändern, wait (), sollten Sie ändern Sie die Anzahl der Parameter für sleep() dann möchten Sie vielleicht, tun Sie den folgenden statt:func_get_args()
arbeiten, wie das nur in PHP - > 5.3 wo Sie es verwenden können in einer Parameterliste. In PHP < 5.3 verwenden Sie eine temporäre variable:$args = func_get_args(); return call_user_unc_array('sleep', $args);
call_user_func_array("TheClass::theStaticMethod", func_get_args());
statt?return sleep(...func_get_args());
function v(&$v) { return Validate($v, ...array_slice(func_get_args(), 1)); }
NÖ, aber Sie können dies tun:
Diese Weise können Sie auch lösen, Argumente-Reihe-Fragen
eval()
integriert in die einzelnen Variablen. Wie gemischter parser, Präprozessor und interpreter in eine sehr schlecht gestaltete Sprache. Hinweis: ich bin kein PHP-Programmierer (C++, Python und Javascript).Kann man sich lambdas auch falls Sie PHP 5.3
Wenn Sie nicht geht, mit Hilfe von PHP ' s "eval" - Anweisung (die eine Menge Leute haben ein echtes problem mit, aber ich nicht), dann können Sie so etwas wie dieses:
Ich es in einigen einfach tests, und es schien ziemlich gut zu funktionieren. Hier ist ein Beispiel:
Nein, es gibt keinen schnellen Weg, um dies zu tun, in PHP. Die Sprache bietet nicht die Möglichkeit zur alias-Funktionen ohne schreiben eine wrapper-Funktion.
Wenn Sie wirklich benötigt werden, könnte man schreiben Sie eine PHP-Erweiterung, dies zu tun wäre für Sie. Wenn Sie jedoch die Erweiterung, die Sie brauchen, um zu kompilieren, Erweiterung und Konfiguration von PHP, um uns diese Erweiterung, was bedeutet, dass die Portabilität der Anwendung stark reduziert werden.
Nein, die Funktionen sind nicht 1.-Klasse-Bürger, so gibt es keine
wait = sleep
wie Javascript zum Beispiel. Sie haben im Grunde tun, was Sie in Ihrer Frage:können Sie verwenden, runkit-Erweiterung
http://us.php.net/manual/en/function.runkit-function-copy.php
Wenn Ihr PHP keine Unterstützung für verwenden Sie x als y syntax, in älteren PHP-version können Sie festlegen,anonyme Funktion:
Oder platzieren Sie den code in der Konstanten, z.B.:
Siehe auch: Was kann ich anstelle von eval()?
Dies ist besonders nützlich, wenn Sie haben langes Stück code, und Sie wollen nicht, Sie zu wiederholen, oder der code ist nicht nützlich für eine neue Funktion entweder.
Gibt es auch die Funktion gepostet von Dave H, die ist sehr nützlich für das erstellen eines alias für eine benutzerdefinierte Funktion:
NÖ. die Art und Weise, die Sie schrieb, ist der beste Weg, es zu tun.
Nein, es gibt keinen schnellen Weg, dies zu tun - zumindest für alles, was vor PHP v5.3, und es ist nicht eine besonders gute Idee, dies zu tun. Es ist einfach kompliziert die Angelegenheit.
Seit PHP 5.6
Dies ist besonders hilfreich für den Einsatz in Klassen mit magischen Methoden.
Aber ich bin mir ziemlich sicher, dass es funktioniert mit normalen Funktionen auch.
Quelle:
PHP: Neue features -> "Variadic-Funktionen über ..."
Ich weiß, das ist alt, aber man kann immer
Was habe ich in meiner KLASSE