/** * {@inheritdoc} */ public function handle($code) { if ($this->handlers->isEmpty()) { throw new HandleException(self::class, 'There are no handlers defined.'); } foreach ($this->handlers as $handler) { $handler->handle($code); } }
/** * Adds a validator to the beginning of the chain * * If $breakChainOnFailure is true, then if the validator fails, the next validator in the chain, * if one exists, will not be executed. * * @param ValidatorInterface $validator * @param bool $breakChainOnFailure * @return ValidatorChain Provides a fluent interface */ public function prependValidator(ValidatorInterface $validator, $breakChainOnFailure = false) { $priority = self::DEFAULT_PRIORITY; if (!$this->validators->isEmpty()) { $extractedNodes = $this->validators->toArray(PriorityQueue::EXTR_PRIORITY); rsort($extractedNodes, SORT_NUMERIC); $priority = $extractedNodes[0] + 1; } $this->validators->insert(['instance' => $validator, 'breakChainOnFailure' => (bool) $breakChainOnFailure], $priority); return $this; }
/** * Adds a validator to the beginning of the chain * * If $breakChainOnFailure is true, then if the validator fails, the next validator in the chain, * if one exists, will not be executed. * * @param ValidatorInterface $validator * @param bool $breakChainOnFailure * @return ValidatorChain Provides a fluent interface */ public function prependValidator(ValidatorInterface $validator, $breakChainOnFailure = false) { $priority = self::DEFAULT_PRIORITY; if (!$this->validators->isEmpty()) { $queue = $this->validators->getIterator(); $queue->setExtractFlags(PriorityQueue::EXTR_PRIORITY); $extractedNode = $queue->extract(); $priority = $extractedNode[0] + 1; } $this->validators->insert(array('instance' => $validator, 'breakChainOnFailure' => (bool) $breakChainOnFailure), $priority); return $this; }
public function testCloningAlsoClonesQueue() { $foo = new \stdClass(); $foo->name = 'bar'; $queue = new PriorityQueue(); $queue->insert($foo, 1); $queue->insert($foo, 2); $queueClone = clone $queue; while (!$queue->isEmpty()) { $this->assertSame($foo, $queue->top()); $queue->remove($queue->top()); } $this->assertTrue($queue->isEmpty()); $this->assertFalse($queueClone->isEmpty()); $this->assertEquals(2, $queueClone->count()); while (!$queueClone->isEmpty()) { $this->assertSame($foo, $queueClone->top()); $queueClone->remove($queueClone->top()); } $this->assertTrue($queueClone->isEmpty()); }