mirror of
https://github.com/retailcrm/graphql-php.git
synced 2025-02-11 18:19:23 +03:00
fix __toString() for AST Node
previously it would only shallowly convert to array causing json_encode to fail
This commit is contained in:
parent
cb40df220e
commit
ed8bf4e2b2
@ -80,12 +80,46 @@ abstract class Node
|
||||
* @return string
|
||||
*/
|
||||
public function __toString()
|
||||
{
|
||||
$tmp = $this->toArray();
|
||||
$tmp['loc'] = [
|
||||
'start' => $this->loc->start,
|
||||
'end' => $this->loc->end
|
||||
];
|
||||
|
||||
return json_encode($tmp);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function toArray()
|
||||
{
|
||||
$tmp = (array) $this;
|
||||
$tmp['loc'] = [
|
||||
'start' => $this->loc->start,
|
||||
'end' => $this->loc->end
|
||||
];
|
||||
return json_encode($tmp);
|
||||
|
||||
$this->recursiveToArray($tmp);
|
||||
|
||||
return $tmp;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $object
|
||||
*/
|
||||
public function recursiveToArray(&$object)
|
||||
{
|
||||
if ($object instanceof Node) {
|
||||
/** @var Node $object */
|
||||
$object = $object->toArray();
|
||||
} elseif (is_object($object)) {
|
||||
$object = (array) $object;
|
||||
} elseif (is_array($object)) {
|
||||
foreach ($object as &$o) {
|
||||
$this->recursiveToArray($o);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user