PluginProbe
Depicter — Popup & Slider Builder / 1.2.0
Depicter — Popup & Slider Builder v1.2.0
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 / FulfilledPromise.php

FulfilledPromise.php in Depicter — Popup & Slider Builder 1.2.0, at modules/GuzzleHttp/Promise/FulfilledPromise.php

85 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 namespace Depicter\GuzzleHttp\Promise;
4
5 /**
6 * A promise that has been fulfilled.
7 *
8 * Thenning off of this promise will invoke the onFulfilled callback
9 * immediately and ignore other callbacks.
10 */
11 class FulfilledPromise implements PromiseInterface
12 {
13 private $value;
14
15 public function __construct($value)
16 {
17 if (is_object($value) && method_exists($value, 'then')) {
18 throw new \InvalidArgumentException(
19 'You cannot create a FulfilledPromise with a promise.'
20 );
21 }
22
23 $this->value = $value;
24 }
25
26 public function then(
27 callable $onFulfilled = null,
28 callable $onRejected = null
29 ) {
30 // Return itself if there is no onFulfilled function.
31 if (!$onFulfilled) {
32 return $this;
33 }
34
35 $queue = Utils::queue();
36 $p = new Promise([$queue, 'run']);
37 $value = $this->value;
38 $queue->add(static function () use ($p, $value, $onFulfilled) {
39 if (Is::pending($p)) {
40 try {
41 $p->resolve($onFulfilled($value));
42 } catch (\Throwable $e) {
43 $p->reject($e);
44 } catch (\Exception $e) {
45 $p->reject($e);
46 }
47 }
48 });
49
50 return $p;
51 }
52
53 public function otherwise(callable $onRejected)
54 {
55 return $this->then(null, $onRejected);
56 }
57
58 public function wait($unwrap = true, $defaultDelivery = null)
59 {
60 return $unwrap ? $this->value : null;
61 }
62
63 public function getState()
64 {
65 return self::FULFILLED;
66 }
67
68 public function resolve($value)
69 {
70 if ($value !== $this->value) {
71 throw new \LogicException("Cannot resolve a fulfilled promise");
72 }
73 }
74
75 public function reject($reason)
76 {
77 throw new \LogicException("Cannot reject a fulfilled promise");
78 }
79
80 public function cancel()
81 {
82 // pass
83 }
84 }
85