Mailinglisten-Archive |
Hallo, Ich möchte gerne wissen, welche Methoden von einem Objekt, wann aufgerufen werden. wie kann ich das in PHP am besten automatisieren? Ansatz 1: abstract class logger { public function __call($name, $args) { echo "$name called\n"; } } class test extends logger { function func() { echo "hi\n"; } } $test=new test(); $test->func(); Das geht ja nicht, da __call ja nur dann aufgerufen wird, wenn die funktion nicht existiert. Ansatz 2: class logger { private $object; public function __construct(object $object) { $this->object=$object; } public function __call($name, $args) { echo "$name called\n"; // dann etwas wie folgt... switch(count($args)) { 0: return $this->$object->$name(); break; 1: return $this->$object->$name($args[0]); break; 2: return $this->$object->$name($args[0], $args[1]); break; 3: return $this->$object->$name($args[0], $args[1], $args[2]); break; 4: return $this->$object->$name($args[0], $args[1], $args[2], $args[3]); break; 5: return $this->$object->$name($args[0], $args[1], $args[2], $args[3], $args[4]); break; default: echo "FEHLER!!!\n"; } } } class test { function func() { echo "hi\n"; } } $test=new logger(new test()); $test->func(); Nachteil hier, zuerst mal das mit den params und wenn im code irgendwo "if($test instanceof test)" aufgerufen wird, gibts auch probleme. Zudem müsste man hier auch den code überall umschreiben von new test() zu new logger(new test()) Wie kann ich also eine einfach Automatisierung machen? Grüsse Marco
php::bar PHP Wiki - Listenarchive