Posso creare una funzione PHP che posso chiamare senza parentesi?
Domanda
Ho una funzione che è effettivamente un sostituto per la stampa e voglio chiamarla senza parentesi, proprio come chiamare print.
# Replace
print $foo, $bar, "\n";
# with
myprint $foo, $bar, "\n";
In Perl, è possibile creare subroutine con modelli di parametri e consente esattamente questo comportamento se si definisce una subroutine come
sub myprint(@) { ... }
Qualcosa di simile in PHP?
Soluzione
print non è una funzioni variabili
Perché questo è un costrutto di linguaggio e non una funzione, non può essere chiamato usando funzioni variabili
E:
Funzioni variabili
PHP supporta il concetto di variabile funzioni. Ciò significa che se a il nome della variabile ha le parentesi aggiunte ad esso, PHP cercherà una funzione con lo stesso nome di qualunque sia il la variabile valuta e lo farà tenta di eseguirlo. Tra l'altro cose, questo può essere usato per implementare richiamate, tabelle delle funzioni e così via via.
Altri suggerimenti
Solo modificando la base di codice PHP e aggiungendo un nuovo costrutto per la lingua.
-Adam
No, non puoi farlo in PHP. La stampa non è in realtà una funzione, è un "linguaggio costruttivo" " ;.
No, PHP non ti permetterà di farlo.
Stavo cercando un modo per codificare un eco per fare qualcosa del tipo:
echoh "hello";
e ottieni:
'hello<br>\n'.
Suppongo che una soluzione potrebbe essere quella di definire una costante e usarla:
<?php
const PHP_BR_EOL = "<br>\n";
echo "Hello" . PHP_BR_EOL;
?>
Ora ricevo:
Hello<br>
So che richiede una maggiore digitazione, ma è più compatibile con gli esempi del manuale di PHP e uso gvim con omnicomplete per salvare la digitazione. Inoltre sarebbe facile fare una ricerca globale / sostituire PHP_EOL con PHP_BR_EOL.
Questo può essere fatto con PHP. Le funzioni dichiarate devono essere chiamate tra parentesi