Ho una classe Logger
che, tra le altre cose, ha un metodo Log
.
Come Log
è l'uso più comune dell'istanza Logger
, ho cablato __invoke
chiamare Log
PHP Callable Object as Object Member
Un'altra classe, "Sito" contiene un membro di "Log", un esempio di Logger.
Perché sarebbe questo lavoro:
$Log = $this->Log;
$Log("Message");
Ma non questa:
$this->Log("Message");
L'ex fallisce con "Fatal error PHP: Call to metodo non definito del sito :: Log()"
Is questa è una limitazione dell'implementazione dell'oggetto callable, o sto fraintendendo qualcosa?
Principalmente a causa della digitazione libera. Non c'è modo di inferire in realtà ciò che si potrebbe voler dire, quindi il valore predefinito è l'errore all'inizio. –
Ho scritto un preparatutto dispari che consente di scrivere tali espressioni: http://code.google.com/p/php-preparser/ :) (posso "pubblicizzare" le mie soluzioni open-source qui?) –
Questo esempio non è più rilevante, questa sintassi funziona ora. –