for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
/*
* This file is part of the Phive Queue package.
*
* (c) Eugene Leonovich <[email protected]>
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Phive\Queue;
class ExceptionalQueue implements Queue
{
/**
* @var Queue
private $queue;
public function __construct(Queue $queue)
$this->queue = $queue;
}
* {@inheritdoc}
public function push($item, $eta = null)
$this->exceptional(function () use ($item, $eta) {
$this->queue->push($item, $eta);
});
public function pop()
return $this->exceptional(function () {
return $this->queue->pop();
public function count()
return $this->queue->count();
public function clear()
$this->exceptional(function () {
$this->queue->clear();
* @param \Closure $func The function to execute.
* @return mixed
* @throws QueueException
protected function exceptional(\Closure $func)
try {
$result = $func();
} catch (QueueException $e) {
throw $e;
} catch (\Exception $e) {
throw new QueueException($this->queue, $e->getMessage(), 0, $e);
return $result;