コード例 #1
0
ファイル: runtime.php プロジェクト: jubianchi/async-generator
 /**
  * @param mixed $generatorOrValue
  *
  * @return mixed
  */
 public static function await($generatorOrValue)
 {
     switch (true) {
         case $generatorOrValue instanceof \generator:
             $generatorOrValue->current();
             while ($generatorOrValue->valid() === true) {
                 $generatorOrValue->next();
             }
             return self::await($generatorOrValue->getReturn());
         case is_callable($generatorOrValue):
             return self::await($generatorOrValue());
         case $generatorOrValue instanceof wrapper:
             return wrapper::unwrap($generatorOrValue);
         case is_array($generatorOrValue) === true:
             return array_map(function ($generator) {
                 return self::await($generator);
             }, $generatorOrValue);
         default:
             return $generatorOrValue;
     }
 }