private function array_map_deep(array $array, array $graph)
{
foreach ($array as $k => $v) {
if (!is_array($v)) {
continue;
}
if (array_key_exists('metadata', $v) && isset($v['metadata']['labels'])) {
$array[$k] = new Node($v['metadata']['id'], $v['metadata']['labels'], $v['data']);
} elseif (array_key_exists('start', $v) && array_key_exists('type', $v)) {
$array[$k] = new Relationship($v['metadata']['id'], $v['type'], $this->extractIdFromRestUrl($v['start']), $this->extractIdFromRestUrl($v['end']), $v['data']);
} elseif (array_key_exists('length', $v) && array_key_exists('relationships', $v) && array_key_exists('nodes', $v)) {
$array[$k] = new Path($this->getNodesFromPathMetadata($v, $graph), $this->getRelationshipsFromPathMetadata($v, $graph));
} else {
$array[$k] = $this->array_map_deep($v, $graph);
}
}
return $array;
}