Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 4.2.x will end 22 April 2024 (12 months).
  • Bug fixes for security issues in 4.2.x will end 7 October 2024 (18 months).
  • PHP version: minimum PHP 8.0.0 Note: minimum PHP version has increased since Moodle 4.1. PHP 8.1.x is supported too.
   1  <?php
   2  
   3  namespace GuzzleHttp\Promise;
   4  
   5  final class Create
   6  {
   7      /**
   8       * Creates a promise for a value if the value is not a promise.
   9       *
  10       * @param mixed $value Promise or value.
  11       *
  12       * @return PromiseInterface
  13       */
  14      public static function promiseFor($value)
  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              return $promise;
  27          }
  28  
  29          return new FulfilledPromise($value);
  30      }
  31  
  32      /**
  33       * Creates a rejected promise for a reason if the reason is not a promise.
  34       * If the provided reason is a promise, then it is returned as-is.
  35       *
  36       * @param mixed $reason Promise or reason.
  37       *
  38       * @return PromiseInterface
  39       */
  40      public static function rejectionFor($reason)
  41      {
  42          if ($reason instanceof PromiseInterface) {
  43              return $reason;
  44          }
  45  
  46          return new RejectedPromise($reason);
  47      }
  48  
  49      /**
  50       * Create an exception for a rejected promise value.
  51       *
  52       * @param mixed $reason
  53       *
  54       * @return \Exception|\Throwable
  55       */
  56      public static function exceptionFor($reason)
  57      {
  58          if ($reason instanceof \Exception || $reason instanceof \Throwable) {
  59              return $reason;
  60          }
  61  
  62          return new RejectionException($reason);
  63      }
  64  
  65      /**
  66       * Returns an iterator for the given value.
  67       *
  68       * @param mixed $value
  69       *
  70       * @return \Iterator
  71       */
  72      public static function iterFor($value)
  73      {
  74          if ($value instanceof \Iterator) {
  75              return $value;
  76          }
  77  
  78          if (is_array($value)) {
  79              return new \ArrayIterator($value);
  80          }
  81  
  82          return new \ArrayIterator([$value]);
  83      }
  84  }