Sto cercando di capire come catturare qualsiasi metodo chiamato su un oggetto in PHP. Conosco la funzione magica __call
, ma è attivata solo per metodi che non esistono sull'oggetto chiamato.Come catturare qualsiasi chiamata di metodo su un oggetto in PHP?
Per esempio io ho qualcosa di simile:
class Foo
{
public function bar()
{
echo 'foobar';
}
public function override($method_name,$method_args)
{
echo 'Calling method ',$method_name,'<br />';
$this->$method_name($method_args); //dirty, but working
}
}
E quando faccio questo:
$foo = new Foo();
$foo->bar();
Voglio che questa uscita:
Calling method bar
foobar
invece di questo:
foobar
Esiste un modo per farlo? Aiuto per favore :)
Grazie amico, questo è esattamente quello di cui avevo bisogno :) – Pirozek
Un caso in cui questo non funzionerebbe è se hai metodi che si aspettano 'Foo', ad esempio' someMethod (Foo $ foo) ' –