src/Utils/AST.php
public static function valueFromASTUntyped($valueNode, ?array $variables = null)
    {
        switch (true) {
            case $valueNode instanceof NullValueNode:
                return null;
            case $valueNode instanceof IntValueNode:
                return intval($valueNode->value, 10);
            case $valueNode instanceof FloatValueNode:
                return floatval($valueNode->value);
            case $valueNode instanceof StringValueNode:
            case $valueNode instanceof EnumValueNode:
            case $valueNode instanceof BooleanValueNode:
                return $valueNode->value;
            case $valueNode instanceof ListValueNode:
                return array_map(
                    static function ($node) use ($variables) {
                        return self::valueFromASTUntyped($node, $variables);
                    },
                    iterator_to_array($valueNode->values)
                );
            case $valueNode instanceof ObjectValueNode:
                return array_combine(
                    array_map(
                        static function ($field) {
                            return $field->name->value;
                        },
                        iterator_to_array($valueNode->fields)
                    ),
                    array_map(
                        static function ($field) use ($variables) {
                            return self::valueFromASTUntyped($field->value, $variables);
                        },
                        iterator_to_array($valueNode->fields)
                    )
                );
            case $valueNode instanceof VariableNode:
                $variableName = $valueNode->name->value;

                return $variables && isset($variables[$variableName])
                    ? $variables[$variableName]
                    : null;
        }

        throw new Error('Unexpected value kind: ' . $valueNode->kind . '.');
    }
public static function valueFromASTUntyped($valueNode, ?array $variables = null)
    {
        switch (true) {
            case $valueNode instanceof NullValueNode:
                return null;
            case $valueNode instanceof IntValueNode:
                return intval($valueNode->value, 10);
            case $valueNode instanceof FloatValueNode:
                return floatval($valueNode->value);
            case $valueNode instanceof StringValueNode:
            case $valueNode instanceof EnumValueNode:
            case $valueNode instanceof BooleanValueNode:
                return $valueNode->value;
            case $valueNode instanceof ListValueNode:
                return array_map(
                    static function ($node) use ($variables) {
                        return self::valueFromASTUntyped($node, $variables);
                    },
                    iterator_to_array($valueNode->values)
                );
            case $valueNode instanceof ObjectValueNode:
                return array_combine(
                    array_map(
                        static function ($field) {
                            return $field->name->value;
                        },
                        iterator_to_array($valueNode->fields)
                    ),
                    array_map(
                        static function ($field) use ($variables) {
                            return self::valueFromASTUntyped($field->value, $variables);
                        },
                        iterator_to_array($valueNode->fields)
                    )
                );
            case $valueNode instanceof VariableNode:
                $variableName = $valueNode->name->value;

                return $variables && isset($variables[$variableName])
                    ? $variables[$variableName]
                    : null;
        }

        throw new Error('Unexpected value kind: ' . $valueNode->kind . '.');
    }
public static function valueFromASTUntyped ( $ valueNode , ? array $ variables = null ) { switch ( true ) { case $ valueNode instanceof NullValueNode : return null ; case $ valueNode instanceof IntValueNode : return intval ( $ valueNode -> value , 10 ) ; case $ valueNode instanceof FloatValueNode : return floatval ( $ valueNode -> value ) ; case $ valueNode instanceof StringValueNode : case $ valueNode instanceof EnumValueNode : case $ valueNode instanceof BooleanValueNode : return $ valueNode -> value ; case $ valueNode instanceof ListValueNode : return array_map ( static function ( $ node ) use ( $ variables ) { return self :: valueFromASTUntyped ( $ node , $ variables ) ; } , iterator_to_array ( $ valueNode -> values ) ) ; case $ valueNode instanceof ObjectValueNode : return array_combine ( array_map ( static function ( $ field ) { return $ field -> name -> value ; } , iterator_to_array ( $ valueNode -> fields ) ) , array_map ( static function ( $ field ) use ( $ variables ) { return self :: valueFromASTUntyped ( $ field -> value , $ variables ) ; } , iterator_to_array ( $ valueNode -> fields ) ) ) ; case $ valueNode instanceof VariableNode : $ variableName = $ valueNode -> name -> value ; return $ variables && isset ( $ variables [ $ variableName ] ) ? $ variables [ $ variableName ] : null ; } throw new Error ( 'Unexpected value kind: ' . $ valueNode -> kind . '.' ) ; }
Produces a PHP value given a GraphQL Value AST.

Unlike `valueFromAST()`, no type is provided. The resulting PHP value
will reflect the provided GraphQL value AST.

| GraphQL Value        | PHP Value     |
| -------------------- | ------------- |
| Input Object         | Assoc Array   |
| List                 | Array         |
| Boolean              | Boolean       |
| String               | String        |
| Int / Float          | Int / Float   |
| Enum                 | Mixed         |
| Null                 | null          |

@param Node         $valueNode
@param mixed[]|null $variables

@return mixed

@throws Exception

@api
Produces a PHP value given a GraphQL Value AST .