mpyw\Co\Internal\YieldableUtils::normalize PHP Метод

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

Generator Closure -> GeneratorContainer Array -> Array (children's are normalized) Others -> Others
public static normalize ( mixed $value, mixed $yield_key = null ) : mixed
$value mixed
$yield_key mixed
Результат mixed
    public static function normalize($value, $yield_key = null)
    {
        if (TypeUtils::isGeneratorClosure($value)) {
            $value = $value();
        }
        if ($value instanceof \Generator) {
            return new GeneratorContainer($value, $yield_key);
        }
        if (is_array($value)) {
            $tmp = [];
            foreach ($value as $k => $v) {
                $tmp[$k] = self::normalize($v, $yield_key);
            }
            return $tmp;
        }
        return $value;
    }

Usage Example

Пример #1
0
 /**
  * Executed by Co::any() or Co::race().
  * @param  mixed    $value
  * @param  callable $filter  self::reverse or self::fail.
  * @param  string   $message Used for failure.
  * @return \Generator
  */
 public static function anyOrRace($value, callable $filter, $message)
 {
     $value = YieldableUtils::normalize($value);
     $yieldables = YieldableUtils::getYieldables($value);
     $wrapper = self::getWrapperGenerator($yieldables, $filter);
     try {
         $results = (yield $wrapper);
     } catch (ControlException $e) {
         (yield CoInterface::RETURN_WITH => $e->getValue());
     }
     $apply = YieldableUtils::getApplier($value, $yieldables);
     throw new AllFailedException($message, 0, $apply($results));
 }
All Usage Examples Of mpyw\Co\Internal\YieldableUtils::normalize