12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- <?php
- declare(strict_types=1);
- namespace GuzzleHttp\Promise;
- final class Create
- {
- /**
- * Creates a promise for a value if the value is not a promise.
- *
- * @param mixed $value Promise or value.
- */
- public static function promiseFor($value): PromiseInterface
- {
- if ($value instanceof PromiseInterface) {
- return $value;
- }
- // Return a Guzzle promise that shadows the given promise.
- if (is_object($value) && method_exists($value, 'then')) {
- $wfn = method_exists($value, 'wait') ? [$value, 'wait'] : null;
- $cfn = method_exists($value, 'cancel') ? [$value, 'cancel'] : null;
- $promise = new Promise($wfn, $cfn);
- $value->then([$promise, 'resolve'], [$promise, 'reject']);
- return $promise;
- }
- return new FulfilledPromise($value);
- }
- /**
- * Creates a rejected promise for a reason if the reason is not a promise.
- * If the provided reason is a promise, then it is returned as-is.
- *
- * @param mixed $reason Promise or reason.
- */
- public static function rejectionFor($reason): PromiseInterface
- {
- if ($reason instanceof PromiseInterface) {
- return $reason;
- }
- return new RejectedPromise($reason);
- }
- /**
- * Create an exception for a rejected promise value.
- *
- * @param mixed $reason
- */
- public static function exceptionFor($reason): \Throwable
- {
- if ($reason instanceof \Throwable) {
- return $reason;
- }
- return new RejectionException($reason);
- }
- /**
- * Returns an iterator for the given value.
- *
- * @param mixed $value
- */
- public static function iterFor($value): \Iterator
- {
- if ($value instanceof \Iterator) {
- return $value;
- }
- if (is_array($value)) {
- return new \ArrayIterator($value);
- }
- return new \ArrayIterator([$value]);
- }
- }
|