Существуют ли какие-либо инструменты, которые могут перечислять имена классов, используемых файлом PHP?
Например, если я запустил этот файл:
<?
class Test {
public function __construct(Obj1 $x) {
$y = new Obj2();
$str = "Obj3";
$z = new $str();
}
}
?>
будет сообщать "Obj1" и "Obj2". Если бы он был действительно умным, он мог бы также сообщить об «Obj3», но это не обязательно.
Я пытаюсь упаковать некоторый код, и мне нужна помощь, чтобы убедиться, что я не пропустил никаких зависимостей.
Есть нечто, называемое PHP_Depend , которое может отображать число зависимостей, но не может сообщить, что они из себя представляют.
ОБНОВЛЕНИЕ: Я не нашел реального решения, но я нашел что-то достаточно близкое для моих целей. Вы можете токенизировать файл и искать все токены T_STRING. Это даст вам все имена классов, упомянутых в файле. Это также даст вам другие вещи, такие как имена функций и константы. Но если имена ваших классов легко отличить (например, они имеют начальные заглавные буквы), то это не должно быть проблемой.
$contents = file_get_contents($path);
$tokens = token_get_all($contents);
foreach ($tokens as $token) {
if (is_array($token) && $token[0] === T_STRING) {
echo $token[1]."\n";
}
}