|
- <?php
-
- 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.
- *
- * @return PromiseInterface
- */
- public static function promiseFor($value)
- {
- 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.
- *
- * @return PromiseInterface
- */
- public static function rejectionFor($reason)
- {
- if ($reason instanceof PromiseInterface) {
- return $reason;
- }
-
- return new RejectedPromise($reason);
- }
-
- /**
- * Create an exception for a rejected promise value.
- *
- * @param mixed $reason
- *
- * @return \Exception|\Throwable
- */
- public static function exceptionFor($reason)
- {
- if ($reason instanceof \Exception || $reason instanceof \Throwable) {
- return $reason;
- }
-
- return new RejectionException($reason);
- }
-
- /**
- * Returns an iterator for the given value.
- *
- * @param mixed $value
- *
- * @return \Iterator
- */
- public static function iterFor($value)
- {
- if ($value instanceof \Iterator) {
- return $value;
- }
-
- if (is_array($value)) {
- return new \ArrayIterator($value);
- }
-
- return new \ArrayIterator([$value]);
- }
- }
|