/** * {@inheritDoc} */ public function notifyObservers() { if ($this->updating) { throw SubjectException::alreadyUpdating(); } $this->resetInterrupt(); $this->updating = true; /** @var ObserverInterface $observer */ foreach ($this->getObservers() as $observers) { foreach ($observers as $observer) { try { $observer->receiveUpdate($this); } catch (Exception $exception) { $this->updating = false; throw $exception; } if ($this->reason) { $this->updating = false; throw $this->reason; } } } $this->updating = false; }
/** * Make sure that we get the message we are expecting. */ public function testAlreadyUpdating() { $this->assertEquals('There is already an update in progress.', SubjectException::alreadyUpdating()->getMessage(), 'Make sure we get the right message.'); }