2016-08-22 93 views
5

我遇到过一个问题,我需要在我的项目中需要(=使用)的所有PEAR包的列表。 是否有一种工具可以通过简单阅读代码获取我的源代码中使用的所有PEAR包列表? 阅读所有安装的软件包是不够的,我真的只需要那些真正使用的软件包。 我需要这个,所以我可以升级软件包,或者更好 - 用可通过作曲者安装的新库替换它们。查找项目中所需的所有PEAR包(源代码)

我遇到了PEAR包PHP_CompatInfo,但这并没有给我带来好的结果,而且它也只列出了在插件本身注册的包。

+0

您运行的是哪个版本的PHP? –

+0

我正在运行PHP 5.3。但如果它有帮助,我可以升级到任何5.x版本 – Asped

回答

2

我会先评估所安装的PEAR类系统

上,如果你认为某些利布斯的项目中使用可能会丢失,你需要下载本地整个PEAR库

全部下载包执行:

pear config-set preferred_state alpha 
pear remote-list | awk '{print $1}' > tmp-list ; tail -n +5 tmp-list > pear-list ; rm tmp-list 
cat pear-list | xargs -n 1 pear install 

然后创建所有类的列表:

cd /usr/share/php #(or different path to pear libs) 

find . ! -path "*/tests/*" ! -path "*/examples/*" -name "*.php" -type f | xargs grep -Pho "^class ([a-zA-Z0-9_]+)" | sed -e "s/^class //" -e "" > all_pear.txt 

那将造成保存到all_pear.txt

所有梨类的列表然后我会寻找我的代码中所有引用

cd my_project; 

while read line; do find . -name "*.php" -type f | xargs grep -Pho $line; done < path/to/all_pear.txt | sort | uniq > used_classes.txt 

,将创建列表关闭在项目中使用的所有PEAR类,并将其保存进入文件列表used_classes.txt

+0

似乎是一个很好的解决方案,但是 - 您需要首先下载所有pear libs +我仍然得到一些奇怪的软件包,如“C”或“abc”,“d”我不知道 – Asped

+0

这可能是这些“a”“b”类来自测试目录我更新答案并排除测试和示例目录。还添加了如何下载所有梨类的基本说明..(仍然在下载某些库时显示一些PHP扩展名缺失),所以可能应该有一个更好的方式来下载所有没有依赖关系检查的包。 –

+0

我基本上不太喜欢这个想法,因为我必须通过安装所有的梨包来污染我的系统,以便在它们中搜索。但我想在我的情况下,我不需要,因为我的应用程序工作,所以我认为我需要的所有库已经安装。我只想过滤掉那些我不需要的东西 – Asped

相关问题