【发布时间】:2011-02-12 04:23:27
【问题描述】:
有没有工具可以列出 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";
}
}
【问题讨论】:
-
嗯,classes 的名称与查找文件依赖关系并不真正相关,是吗?因为有许多关于查找文件依赖项的 SO 问题。
-
我认为如果不实际运行代码,您将无法找到文件依赖项。但我认为解析器至少可以提取类名,这对我的目的来说应该足够了。
-
关于这是一个较老的问题,你有没有发现比标记器更好的东西?我正在寻找完全按照您的描述做的事情。
-
不,什么都没找到。
标签: php dependencies