C'è un modo per emulare il metodo magico __call() di PHP5 in PHP4?
-
09-06-2019 - |
Domanda
PHP5 ha un "metodo magico" __call()
che può essere definito su qualsiasi classe invocata quando viene chiamato un metodo non definito -- è più o meno equivalente a quello di Ruby method_missing
o di Perl AUTOLOAD
.È possibile fare qualcosa di simile nelle versioni precedenti di PHP?
Soluzione
Questo articolo, Utilizzo dell'overload delle chiamate di metodo in PHP 4 su DevShed potrebbe aiutare.
Altri suggerimenti
La cosa più importante che mi mancava era quella __call
esiste in PHP4, ma è necessario abilitarlo in base alla classe chiamando overload()
, come visto in documenti php qui .Sfortunatamente, le firme della funzione __call() sono diverse tra PHP4 e PHP5 e non sembra esserci un modo per realizzare un'implementazione che possa essere eseguita in entrambi.
Ricordo di averlo usato e un po' di ricerca su Google lo suggerisce
function __call($method_name, $parameters, &$return)
{
$return_value = "You called ${method_name}!";
}
come funzione membro farà il lavoro.