Estoy intentando descubrir cómo atrapar cualquier método llamado a un objeto en PHP. Conozco la función mágica __call
, pero se activa solo para los métodos que no existen en el objeto llamado.Cómo atrapar cualquier llamada de método en objeto en PHP?
Por ejemplo tengo algo como esto:
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
}
}
Y cuando hago esto:
$foo = new Foo();
$foo->bar();
Quiero esta salida:
Calling method bar
foobar
en lugar de éste:
foobar
¿Hay alguna manera de cómo hacer esto? Ayuda por favor :)
Gracias amigo, eso es exactamente lo que necesitaba :) – Pirozek
Un caso en el que esto no funcionará es si tiene métodos que esperan 'Foo', por ejemplo' someMethod (Foo $ foo) ' –