<?php Doctrine::autoload('Doctrine_Access'); class Doctrine_EvenListener_Chain extends Doctrine_Access { /** * @var array $listeners */ private $listeners = array(); /** * add * * @param Doctrine_EventListener $listener * @return void */ public function add(Doctrine_EventListener $listener) { $this->listeners[] = $listener; } /** * returns a Doctrine_EvenListener on success * and null on failure * * @param mixed $key * @return mixed */ public function get($key) { if( ! isset($this->listeners[$key])) return null; return $this->listeners[$key]; } /** * set * * @param mixed $key * @param Doctrine_EventListener $listener * @return void */ public function set($key, Doctrine_EventListener $listener) { $this->listeners[$key] = $listener; } /** * this method should only be called internally by * doctrine, since it doesn't do any method existence checking * * @param method $method * @param array $args */ public function __call($method, $args) { foreach($this->listeners as $listener) { $listener->$method($args[0]); } } } ?>