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;
}