Я проанализировал код, и часть результата (AST) представляет собой массив, подобный этому:
Array (
[0] => PhpParser\Node\Stmt\Class_ Object
(
[flags] => 0
[implements] => Array
(
)
[name] => Test
[stmts] => Array
(
[0] => PhpParser\Node\Stmt\ClassMethod Object
( ...
Теперь я хочу извлечь каждый путь из вышеуказанного массива. Я использую ниже решение:
function backKeyPaths($tree){
$paths = array();
foreach ($tree as $key => &$mixed) {
if (is_array($mixed)) {
$results = backKeyPaths($mixed);
foreach ($results as $k => &$v) {
$paths[] = array($key => $v);
}
unset($results);
}
elseif (is_object($mixed)) {
$results = backKeyPaths($mixed);
foreach ($results as $k => &$v) {
$paths[] = array($key => (object) $v);
}
unset($results);
}
else {
$paths[] = array($key => $mixed);
}
}
return $paths;}
На самом деле желаемый результат должен быть таким:
[0] => PhpParser\Node\Stmt\Class_ Object
(
[flags] => 0
)
[1] => PhpParser\Node\Stmt\Class_ Object
(
[implements] => Array
(
)
)
[2] => PhpParser\Node\Stmt\Class_ Object
(
[name] => Test
)
[3] => PhpParser\Node\Stmt\Class_ Object
(
[stmts] => Array
(
[0] => PhpParser\Node\Stmt\ClassMethod Object
( ...
) ...
Но мое решение не возвращает правильный класс объектов и рассматривает их все как объекты StdClass. Есть ли способ привести объекты в правильный или извлечь пути, сохранив тип значений?