Kann ich eine PHP-Funktion erstellen, die ich ohne Klammern aufrufen können?
Frage
Ich habe eine Funktion, die effektiv ein Ersatz für den Druck ist, und ich möchte es ohne Klammern nennen, so wie Druck aufrufen.
# Replace
print $foo, $bar, "\n";
# with
myprint $foo, $bar, "\n";
In Perl können Sie Subroutinen mit Parametervorlagen erstellen und es ermöglicht genau dieses Verhalten, wenn Sie ein Unterprogramm als
definierensub myprint(@) { ... }
Alles, was ähnlich in PHP?
Lösung
Da dies ein Sprachkonstrukt und keine Funktion ist, kann es nicht sein mit Variablenfunktionen verwenden
Und:
Variable Funktionen
PHP unterstützt das Konzept der variablen Funktionen. Das bedeutet, dass, wenn ein Variablenname hat Klammern angefügt es wird PHP für eine Funktion aussehen mit dem gleichen Namen wie alles, was der Variable ausgewertet, und wird versuchen, ihn auszuführen. Unter anderem Dinge, können diese verwendet werden, zu implementieren, Rückrufe funktionieren Tabellen usw. weiter.
Andere Tipps
Nur durch die PHP-Code-Basis Bearbeitung und eine neue Sprache Konstrukt hinzugefügt wird.
-Adam
Nein, Sie können das nicht in PHP. Druck ist nicht wirklich eine Funktion, es ist ein „Sprachkonstrukt“.
Nein, PHP wird nicht zulassen, dass Sie das tun.
Ich war auf der Suche nach einem Weg, um eine echoh zu codieren so etwas wie zu tun:
echoh "hello";
und erhalten:
'hello<br>\n'.
Ich denke, eine Lösung könnte eine Konstante sein, zu definieren und verwenden es:
<?php
const PHP_BR_EOL = "<br>\n";
echo "Hello" . PHP_BR_EOL;
?>
Jetzt erhalte ich:
Hello<br>
Ich weiß, dass es mehr Typisierung erfordert, aber es mehr complient mit den Beispielen auf dem PHP-Handbuch ist, und ich verwende gvim mit omnicomplete auf der Eingabe zu speichern. Auch wäre es einfach eine globale Suche / ersetzen PHP_EOL durch PHP_BR_EOL zu tun.
Das kann mit PHP erfolgen. Funktionen, die Sie deklarieren müssen mit Klammern aufgerufen werden