PluginProbe
Depicter — Popup & Slider Builder / trunk
Depicter — Popup & Slider Builder vtrunk
4.8.1 trunk 1.0.0 1.1.0 1.1.2 1.1.4 1.1.6 1.1.7 1.1.8 1.1.9 1.2.0 1.3.0 1.3.1 1.3.2 1.3.3 1.3.5 1.3.8 1.5.0 1.5.1 1.5.2 1.5.5 1.6.0 1.6.1 1.6.2 1.7.0 All 76 releases
depicter / modules / GuzzleHttp / Promise / Create.php

Create.php in Depicter — Popup & Slider Builder trunk, at modules/GuzzleHttp/Promise/Create.php

80 lines 2.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 declare(strict_types=1);
4
5 namespace Depicter\GuzzleHttp\Promise;
6
7 final class Create
8 {
9 /**
10 * Creates a promise for a value if the value is not a promise.
11 *
12 * @param mixed $value Promise or value.
13 */
14 public static function promiseFor($value): PromiseInterface
15 {
16 if ($value instanceof PromiseInterface) {
17 return $value;
18 }
19
20 // Return a Guzzle promise that shadows the given promise.
21 if (is_object($value) && method_exists($value, 'then')) {
22 $wfn = method_exists($value, 'wait') ? [$value, 'wait'] : null;
23 $cfn = method_exists($value, 'cancel') ? [$value, 'cancel'] : null;
24 $promise = new Promise($wfn, $cfn);
25 $value->then([$promise, 'resolve'], [$promise, 'reject']);
26
27 return $promise;
28 }
29
30 return new FulfilledPromise($value);
31 }
32
33 /**
34 * Creates a rejected promise for a reason if the reason is not a promise.
35 * If the provided reason is a promise, then it is returned as-is.
36 *
37 * @param mixed $reason Promise or reason.
38 */
39 public static function rejectionFor($reason): PromiseInterface
40 {
41 if ($reason instanceof PromiseInterface) {
42 return $reason;
43 }
44
45 return new RejectedPromise($reason);
46 }
47
48 /**
49 * Create an exception for a rejected promise value.
50 *
51 * @param mixed $reason
52 */
53 public static function exceptionFor($reason): \Throwable
54 {
55 if ($reason instanceof \Throwable) {
56 return $reason;
57 }
58
59 return new RejectionException($reason);
60 }
61
62 /**
63 * Returns an iterator for the given value.
64 *
65 * @param mixed $value
66 */
67 public static function iterFor($value): \Iterator
68 {
69 if ($value instanceof \Iterator) {
70 return $value;
71 }
72
73 if (is_array($value)) {
74 return new \ArrayIterator($value);
75 }
76
77 return new \ArrayIterator([$value]);
78 }
79 }
80