Код: Выделить всё
class MyLibrary {
public function myMethod(): array {
...
}
}
< /code>
Тем не менее, мы должны были бы убедиться, что все классы, которые расширяют библиотеку, также имеют подпись метода сопоставления. Мы сделаем это, но также мы также должны убедиться, что все эти методы действительно возвращают массив. В настоящее время есть около 250 арендаторов, которые необходимо проверить, и может быть несколько файлов, которые расширяют библиотеку в соответствии с приведенным выше примером. Прочитайте источник для класса, а затем посмотрите на синтаксисное дерево, чтобы увидеть, возвращает ли mymethod () значение. Особенно, что я ищу, это методы, которые просто ничего не возвращают.use PhpParser\ParserFactory;
use PhpParser\{Node, NodeTraverser, NodeVisitorAbstract};
$code = file_get_contents('path/to/file.php');
$parser = (new ParserFactory())->createForNewestSupportedVersion();
$ast = $parser->parse($code);
$traverser = new NodeTraverser;
$traverser->addVisitor(new class extends NodeVisitorAbstract {
public function leaveNode(Node $node) {
dump($node);
readline();
echo "\n\n\n\n";
}
});
Код: Выделить всё
stmtsПодробнее здесь: https://stackoverflow.com/questions/793 ... rn-a-value
Мобильная версия