1<?php 2 3namespace React\Promise; 4 5/** 6 * @deprecated 2.8.0 External usage of FulfilledPromise is deprecated, use `resolve()` instead. 7 */ 8class FulfilledPromise implements ExtendedPromiseInterface, CancellablePromiseInterface 9{ 10 private $value; 11 12 public function __construct($value = null) 13 { 14 if ($value instanceof PromiseInterface) { 15 throw new \InvalidArgumentException('You cannot create React\Promise\FulfilledPromise with a promise. Use React\Promise\resolve($promiseOrValue) instead.'); 16 } 17 18 $this->value = $value; 19 } 20 21 public function then(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) 22 { 23 if (null === $onFulfilled) { 24 return $this; 25 } 26 27 try { 28 return resolve($onFulfilled($this->value)); 29 } catch (\Throwable $exception) { 30 return new RejectedPromise($exception); 31 } catch (\Exception $exception) { 32 return new RejectedPromise($exception); 33 } 34 } 35 36 public function done(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) 37 { 38 if (null === $onFulfilled) { 39 return; 40 } 41 42 $result = $onFulfilled($this->value); 43 44 if ($result instanceof ExtendedPromiseInterface) { 45 $result->done(); 46 } 47 } 48 49 public function otherwise(callable $onRejected) 50 { 51 return $this; 52 } 53 54 public function always(callable $onFulfilledOrRejected) 55 { 56 return $this->then(function ($value) use ($onFulfilledOrRejected) { 57 return resolve($onFulfilledOrRejected())->then(function () use ($value) { 58 return $value; 59 }); 60 }); 61 } 62 63 public function progress(callable $onProgress) 64 { 65 return $this; 66 } 67 68 public function cancel() 69 { 70 } 71} 72