public function testCanTriggerMultipleListeners() { $listener = new Test_Event_ListenerObj(); Events_Manager::listensToEvents($listener); Events_Manager::listensToEvents('Test_Event_ListenerStatic'); $obj = new Test_Event_Triggered(); // entry conditions $listeners = Events_Manager::getListeners(); $this->assertEquals(2, count($listeners)); $this->assertEquals(2, count($listeners['testEvent1'])); $this->assertEquals(2, count($listeners['testEvent2'])); // change state $obj->doSomething(); $obj->doSomethingElse(); // retest $this->assertEquals(2, $listener->eventsTriggered); $this->assertEquals(array('e', 'f', 'g'), $listener->data); $this->assertEquals(2, Test_Event_ListenerStatic::$eventsTriggered); $this->assertEquals(array('e', 'f', 'g'), Test_Event_ListenerStatic::$data); }
public static function registerCache($cache, $modelName) { self::$aCaches[$modelName][] = $cache; } public static function listenToModelExtended($extensionClass, $modelName) { // var_dump('DataModel_Definitions::listenToModelExtended() called'); // a model has just been extended // now, give the extension a chance to add new fields to // the model's definition $oDef = self::get($modelName); call_user_func_array(array($extensionClass, 'extendsModelDefinition'), array($oDef)); } } // tell the Events mechanism that we need to be kept in the loop .. Events_Manager::listensToEvents('DataModel_Definitions'); // ======================================================================== // ------------------------------------------------------------------------ class DataModel_Definition { protected $primaryKeys = null; protected $autoPrimaryKey = true; protected $aForeignKeys = array(); protected $aFields = array(); protected $aMandatoryFields = array(); protected $aFieldsBySource = array(); protected $aoBehaviours = array(); protected $aViews = array(); protected $aRelationships = array(); protected $aIndices = array(); private $modelName = "";