/** * Sets the value at the specified index to newval * * @link http://www.php.net/manual/en/arrayaccess.offsetset.php ArrayAccess::offsetSet() * * @param mixed $index * The index being set. * @param mixed $newval * The new value for the index. */ public function offsetSet($index, $newval) { // Is object an instance of IEventSubscriber? if (!$newval instanceof IEventSubscriber) { throw new UnexpectedValueException(sprintf('Invalid value: (%s). Instance of IEventSubscriber expected', is_object($newval) ? get_class($newval) : gettype($newval))); } // Add object ArrayObject::offsetSet($index, $newval); // Register Object if ($this->_Mediator instanceof IMediator) { $this->_Mediator->addSubscriber($newval); } }
/** * @depends test_isRegistered * @covers ::remSubscriber */ public function test_remSubscriber() { # Test normal subscriber $EventSubscriber = new MockEventSubscriber(); $this->Mediator->addSubscriber($EventSubscriber); $this->Mediator->remSubscriber($EventSubscriber); $this->assertFalse($this->Mediator->isRegistered('pre.foo'), 'Event name pre.foo should have no subscribers'); $this->assertFalse($this->Mediator->isRegistered('post.foo'), 'Event name post.foo should have no subscribers'); # Test subscriber with priorities $EventSubscriber = new MockEventSubscriberWithPriorities(); $this->Mediator->addSubscriber($EventSubscriber); $this->Mediator->remSubscriber($EventSubscriber); $this->assertFalse($this->Mediator->isRegistered('pre.foo'), 'Event name pre.foo should have no subscribers'); # Test subscriber with multiple callbacks $EventSubscriber = new MockEventSubscriberWithMultipleCallbacks(); $this->Mediator->addSubscriber($EventSubscriber); $this->Mediator->remSubscriber($EventSubscriber); $this->assertFalse($this->Mediator->isRegistered('pre.foo'), 'Event name pre.foo should have no subscribers'); }