大型 PHP 应用程序的依赖关系图
Posted
技术标签:
【中文标题】大型 PHP 应用程序的依赖关系图【英文标题】:Dependencies graph for large PHP application 【发布时间】:2013-09-14 00:20:17 【问题描述】:我最近继承了一个没有对象/模块/命名空间的大型 php 应用程序......只有很多包含函数的文件。
当然,有很多依赖项(以及所有文件,几乎总是包括在内)。
我正在寻找一种可以分析文件并生成依赖关系图的工具。然后检测独立文件/文件集并重构整个事情会更容易。
到目前为止,我发现的best solution 是编写一个 CodeSniffer 嗅探器来检测所有函数调用,然后使用它来生成图形。
它似乎对其他人有用,所以我确信已经存在用于它的工具。
你会推荐什么?
【问题讨论】:
【参考方案1】:我认为最好的解决方案是使用 doc generator + grapviz,PHPDocumentor 看起来在 https://github.com/phpDocumentor/GraphViz 有一个 Grapviz 扩展
这是一个使用 PHPDocumentor 制作的示例: http://demo.phpdoc.org/Clean/graphs/classes.svg
您也可以使用像 xhprof (https://github.com/facebook/xhprof) 这样的分层分析器,这可以绘制一个包含执行中的所有函数调用的树。
Graphviz 完成的 xhprof 绘制示例
【讨论】:
在 laravel 4 项目应用文件夹上执行,但没有在图中显示所有依赖项【参考方案2】:我可以推荐一个我几天前写的轻量级项目。基本上我有一个 300 多个文件的 PHP 项目,我想检测这些文件需要/包含哪些文件,反之亦然。此外,我想检查每个单独的文件该文件需要/包含哪些文件(直接或间接,即通过文件继承),反之亦然:包含此特定文件的文件是什么。对于这些的任何组合,我想要一个交互式依赖图(基于文件包含而不是类/函数调用/使用)。
查看project's sandbox 及其source code。
请注意,整篇文章只用了 2 天就写完了,所以不要评判它 太苛刻了。重要的是它正在做它的工作!
【讨论】:
以上是关于大型 PHP 应用程序的依赖关系图的主要内容,如果未能解决你的问题,请参考以下文章