J'essaie de comprendre comment attraper une méthode appelée sur un objet en PHP. Je connais la fonction magique __call
, mais elle n'est déclenchée que pour les méthodes qui n'existent pas sur l'objet appelé.Comment intercepter un appel de méthode sur un objet en PHP?
Par exemple, j'ai quelque chose comme ceci:
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
}
}
Et quand je fais ceci:
$foo = new Foo();
$foo->bar();
Je veux que cette sortie:
Calling method bar
foobar
au lieu de celui-ci:
foobar
Existe-t-il un moyen de le faire? Aide s'il vous plaît :)
Merci compagnon, c'est exactement ce dont j'avais besoin :) – Pirozek
Un cas où cela ne fonctionnera pas est si vous avez des méthodes qui attendent 'Foo', par exemple' someMethod (Foo $ foo) ' –