2008-10-17 11 views
28

Mam funkcję, która skutecznie zastępuje drukowanie i chcę wywoływać ją bez nawiasów, tak jak wywoływanie wydruku.Czy mogę utworzyć funkcję PHP, którą mogę wywołać bez nawiasów?

# Replace 
print $foo, $bar, "\n"; 

# with 
myprint $foo, $bar, "\n"; 

W Perl, można utworzyć podprogramów z szablonami parametrów i pozwala dokładnie ten problem, jeśli zdefiniować jako podprogram

sub myprint(@) { ... } 

coś podobnego w PHP?

Odpowiedz

22

druku nie jest variable functions

Ponieważ jest to język skonstruować a nie funkcja, to nie może być wywoływana przy użyciu różnych funkcji

oraz:

Variable funkcje

PHP obsługuje koncepcję zmiennych funkcji. Oznacza to, że jeśli nazwa zmiennej ma nawiasy dołączone do niej , PHP będzie szukało funkcji o tej samej nazwie, co dowolna zmienna , i spróbuje wykonać ją pod kątem . Pomiędzy innymi rzeczy, to może być używane do realizacji wywołań zwrotnych , tablic funkcyjnych, a więc dalej.

9

Nie, nie można tego zrobić w PHP. Drukuj w rzeczywistości nie jest funkcją, jest "konstruktem językowym".

11

Tylko poprzez edycję kodu PHP i dodanie nowej konstrukcji językowej.

-Adam

1

Nope, PHP nie pozwoli, aby to zrobić.

2

szukałem sposobu, aby zakodować echoh zrobić coś takiego:

echoh "hello"; 

a otrzymasz:

'hello<br>\n'. 

Chyba jednym z rozwiązań mogłoby być zdefiniowania stałej i używać go :

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

Teraz otrzymuję:

Hello<br> 

Wiem, że to wymaga więcej pisać, ale jest bardziej complient z przykładów w podręczniku PHP i używam gvima z omnicomplete, aby zapisać się na pisaniu. Łatwo też byłoby dokonać globalnego wyszukiwania/zamiany PHP_EOL przez PHP_BR_EOL.

Powiązane problemy