diff --git a/src/FulfilledPromise.php b/src/FulfilledPromise.php index b28afd82..fd6d6337 100644 --- a/src/FulfilledPromise.php +++ b/src/FulfilledPromise.php @@ -22,7 +22,7 @@ public function then(callable $onFulfilled = null, callable $onRejected = null) } return new Promise(function (callable $resolve, callable $reject) use ($onFulfilled) { - queue()->enqueue(function () use ($resolve, $reject, $onFulfilled) { + Queue::enqueue(function () use ($resolve, $reject, $onFulfilled) { try { $resolve($onFulfilled($this->value)); } catch (\Throwable $exception) { @@ -40,7 +40,7 @@ public function done(callable $onFulfilled = null, callable $onRejected = null) return; } - queue()->enqueue(function () use ($onFulfilled) { + Queue::enqueue(function () use ($onFulfilled) { $result = $onFulfilled($this->value); if ($result instanceof PromiseInterface) { diff --git a/src/Queue.php b/src/Queue.php new file mode 100644 index 00000000..afc4295e --- /dev/null +++ b/src/Queue.php @@ -0,0 +1,36 @@ +enqueue($task); + } +} diff --git a/src/Queue/QueueInterface.php b/src/Queue/DriverInterface.php similarity index 77% rename from src/Queue/QueueInterface.php rename to src/Queue/DriverInterface.php index 9c1efc35..7d2865f3 100644 --- a/src/Queue/QueueInterface.php +++ b/src/Queue/DriverInterface.php @@ -2,7 +2,7 @@ namespace React\Promise\Queue; -interface QueueInterface +interface DriverInterface { public function enqueue(callable $task); } diff --git a/src/Queue/SynchronousQueue.php b/src/Queue/SynchronousDriver.php similarity index 92% rename from src/Queue/SynchronousQueue.php rename to src/Queue/SynchronousDriver.php index c20e57e3..33c0372d 100644 --- a/src/Queue/SynchronousQueue.php +++ b/src/Queue/SynchronousDriver.php @@ -2,7 +2,7 @@ namespace React\Promise\Queue; -final class SynchronousQueue implements QueueInterface +final class SynchronousDriver implements DriverInterface { private $queue = []; diff --git a/src/RejectedPromise.php b/src/RejectedPromise.php index 848ac335..2d7549e9 100644 --- a/src/RejectedPromise.php +++ b/src/RejectedPromise.php @@ -22,7 +22,7 @@ public function then(callable $onFulfilled = null, callable $onRejected = null) } return new Promise(function (callable $resolve, callable $reject) use ($onRejected) { - queue()->enqueue(function () use ($resolve, $reject, $onRejected) { + Queue::enqueue(function () use ($resolve, $reject, $onRejected) { try { $resolve($onRejected($this->reason)); } catch (\Throwable $exception) { @@ -36,7 +36,7 @@ public function then(callable $onFulfilled = null, callable $onRejected = null) public function done(callable $onFulfilled = null, callable $onRejected = null) { - queue()->enqueue(function () use ($onRejected) { + Queue::enqueue(function () use ($onRejected) { if (null === $onRejected) { throw UnhandledRejectionException::resolve($this->reason); } diff --git a/src/functions.php b/src/functions.php index 8eb82220..2166c0d5 100644 --- a/src/functions.php +++ b/src/functions.php @@ -189,21 +189,6 @@ function reduce(array $promisesOrValues, callable $reduceFunc, $initialValue = n }, $cancellationQueue); } -function queue(Queue\QueueInterface $queue = null) -{ - static $globalQueue; - - if ($queue) { - return ($globalQueue = $queue); - } - - if (!$globalQueue) { - $globalQueue = new Queue\SynchronousQueue(); - } - - return $globalQueue; -} - /** * @internal */ diff --git a/tests/QueueTest.php b/tests/QueueTest.php new file mode 100644 index 00000000..4846649d --- /dev/null +++ b/tests/QueueTest.php @@ -0,0 +1,22 @@ +getMockBuilder('React\Promise\Queue\DriverInterface') + ->getMock(); + + Queue::setDriver($newDriver); + + $this->assertSame($newDriver, Queue::getDriver()); + + Queue::setDriver($oldDriver); + } +}