Нахождение PHP зависимостей - PullRequest
7 голосов
/ 26 апреля 2010

Существуют ли какие-либо инструменты, которые могут перечислять имена классов, используемых файлом 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";
  }
}

1 Ответ

1 голос
/ 26 апреля 2010

Есть PHPXref , который является генератором документов PHP с перекрестными ссылками.

...