src/Internal/YieldableUtils.php
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;
    }
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;
    }
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 ; }
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
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 .