Kann ich eine PHP-Funktion erstellen, die ich ohne Klammern aufrufen können?

StackOverflow https://stackoverflow.com/questions/212604

  •  03-07-2019
  •  | 
  •  

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

definieren
sub myprint(@) { ... }

Alles, was ähnlich in PHP?

War es hilfreich?

Lösung

Drucken ist kein

  

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top