friendship ended with social-app. php is my new best friend
1<?php 2 3namespace React\Promise; 4 5/** 6 * @template T 7 */ 8final class Deferred 9{ 10 /** 11 * @var PromiseInterface<T> 12 */ 13 private $promise; 14 15 /** @var callable(T):void */ 16 private $resolveCallback; 17 18 /** @var callable(\Throwable):void */ 19 private $rejectCallback; 20 21 /** 22 * @param (callable(callable(T):void,callable(\Throwable):void):void)|null $canceller 23 */ 24 public function __construct(?callable $canceller = null) 25 { 26 $this->promise = new Promise(function ($resolve, $reject): void { 27 $this->resolveCallback = $resolve; 28 $this->rejectCallback = $reject; 29 }, $canceller); 30 } 31 32 /** 33 * @return PromiseInterface<T> 34 */ 35 public function promise(): PromiseInterface 36 { 37 return $this->promise; 38 } 39 40 /** 41 * @param T $value 42 */ 43 public function resolve($value): void 44 { 45 ($this->resolveCallback)($value); 46 } 47 48 public function reject(\Throwable $reason): void 49 { 50 ($this->rejectCallback)($reason); 51 } 52}