isGeneratorContainer() публичный статический Метод

Check if value is a valid Generator.
public static isGeneratorContainer ( mixed $value ) : boolean
$value mixed
Результат boolean
Пример #1
0
 public function testIsGeneratorContainer()
 {
     $gen = (function () {
         (yield 1);
     })();
     $con = new GeneratorContainer($gen);
     $this->assertTrue(TypeUtils::isGeneratorContainer($con));
     $this->assertFalse(TypeUtils::isGeneratorContainer($gen));
 }
Пример #2
0
 /**
  * Recursively search yieldable values.
  * Each entries are assoc those contain keys 'value' and 'keylist'.
  *   value   -> the value itself.
  *   keylist -> position of the value. nests are represented as array values.
  * @param  mixed $value   Must be already normalized.
  * @param  array $keylist Internally used.
  * @param  array &$runners Running cURL or Generator identifiers.
  * @return array
  */
 public static function getYieldables($value, array $keylist = [], array &$runners = [])
 {
     $r = [];
     if (!is_array($value)) {
         if (TypeUtils::isCurl($value) || TypeUtils::isGeneratorContainer($value)) {
             if (isset($runners[(string) $value])) {
                 throw new \DomainException('Duplicated cURL resource or Generator instance found.');
             }
             $r[(string) $value] = $runners[(string) $value] = ['value' => $value, 'keylist' => $keylist];
         }
         return $r;
     }
     foreach ($value as $k => $v) {
         $newlist = array_merge($keylist, [$k]);
         $r = array_merge($r, self::getYieldables($v, $newlist, $runners));
     }
     return $r;
 }
Пример #3
0
Файл: Co.php Проект: mpyw/co
 /**
  * Promise all changes in yieldables are prepared.
  * @param  array $yieldables
  * @param  bool  $throw_acceptable
  * @return PromiseInterface
  */
 private function promiseAll(array $yieldables, $throw_acceptable)
 {
     $promises = [];
     foreach ($yieldables as $yieldable) {
         // Add or enqueue cURL handles
         if (TypeUtils::isCurl($yieldable['value'])) {
             $promises[(string) $yieldable['value']] = $this->pool->addCurl($yieldable['value']);
             continue;
         }
         // Process generators
         if (TypeUtils::isGeneratorContainer($yieldable['value'])) {
             $promises[(string) $yieldable['value']] = $this->processGeneratorContainer($yieldable['value']);
             continue;
         }
     }
     // If caller cannot accept exception,
     // we handle rejected value as resolved.
     if (!$throw_acceptable) {
         $promises = array_map(['\\mpyw\\Co\\Internal\\YieldableUtils', 'safePromise'], $promises);
     }
     return \React\Promise\all($promises);
 }