我设计了一个PHP 5.5+框架,包含750多个不同的类来制作web应用程序和网站。
我想,理想情况下,能够通过产生一个版本的自己只包含一个给定项目(无论是一个网站或web应用程序)所需的基本文件和资源来减少其大小。
我想做的是能够:
- 将特征、类、常量和函数的数量减少到每个项目最基本的数量
- 压缩代码文件以实现较小的部署大小和更快的执行(如果可能的话)
get_declared_classes()
和get_declared_traits()
, get_defined_constants()
和get_defined_functions()
来获得用户定义的类,特征,函数和常量的完整列表。但是它几乎给了我一切,这不是我想要的。
是否有一种方法可以获得所有定义的类,函数和常量(不需要性状,因为我可以在每个类上运行class_uses()
并获得该类使用的性状列表)一个给定的脚本?
我知道有token_get_all()
功能,但我尝试了它没有运气(或者也许是我使用它的错误方式)。
提示吗?如有任何帮助,将不胜感激:)
您可以使用PHP解析器。它根据您提供给它的文件构造抽象语法树。然后,您可以分析每个文件的输出,并生成一个可用的报告。
除此之外,您还可以使用前面提到的token_get_all()
方法,自己编写一个小型解析器。根据您的项目,这可能更容易或更困难。例如,您是否使用大量的new X()
结构,或者您是否倾向于通过构造函数传递依赖关系?
不幸的是,这是你唯一可行的选择,因为PHP是动态类型语言。
如果你使用依赖注入,但是,你可能想看看你的DI框架的内部缓存文件,其中经常包含这样的依赖映射。如果您不使用这样的框架,我建议您开始这样做,特别是因为您的项目很大,而这正是依赖注入所擅长的。PHP-DI,一个这样的框架,在我的一些中型项目(25k SLOC)中被证明是成功的。
谁知道呢?也许重构你的项目来使用DI会让你完成你想要的任务,甚至不需要了解所有的依赖关系。我可以肯定的是,它将帮助您维护它。