2008-10-17 5 views
28

Ich habe eine Funktion, die effektiv ein Ersatz für den Druck ist, und ich möchte es ohne Klammern aufrufen, genau wie beim Drucken.Kann ich eine PHP-Funktion erstellen, die ich ohne Klammern aufrufen kann?

# 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

sub myprint(@) { ... } 

ähnliches in PHP definieren?

Antwort

22

Druck ist kein variable functions

Da dies ein Sprach und nicht eine Funktion konstruieren ist, ist es nicht variable Funktionen sein kann

und rief mit:

Variable Funktionen

PHP unterstützt das Konzept der Variablen Funktionen. Dies bedeutet, dass, wenn ein Variablenname Klammern daran angehängt hat, PHP nach einer Funktion mit dem gleichen Namen sucht, wie die Variable auswertet, und versucht, sie auszuführen. Unter anderem Dinge, die verwendet werden können, um Callbacks, Funktionstabellen, und so her zu implementieren.

9

Nein, das ist in PHP nicht möglich. Drucken ist nicht wirklich eine Funktion, es ist ein "Sprachkonstrukt".

11

Nur durch Bearbeiten der PHP-Codebase und Hinzufügen eines neuen Sprachkonstrukts.

-Adam

1

Nein, PHP wird nicht zulassen, dass das zu tun.

2

ich nach einem Weg suchen, eine echoh zu codieren so etwas wie zu tun:

echoh "hello"; 

und erhalten:

'hello<br>\n'. 

ich denke, eine Lösung, die eine konstante und es definieren könnte verwenden :

<?php 
const PHP_BR_EOL = "<br>\n"; 
echo "Hello" . PHP_BR_EOL; 
?> 

Jetzt erhalte ich:

Hello<br> 

Ich weiß 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. Es wäre auch einfach, PHP_EOL global durch PHP_BR_EOL zu suchen/zu ersetzen.

Verwandte Themen