在 PHP 中转换为命名空间



我目前是一名PHP项目的学生,该项目从一开始就在发展,大约有1800个php文件。

问题是:它完全没有命名空间或任何 PSR-4 等建议。这:)的技术债务很强。

我们想使用作曲家(以及树枝和一些库更多)并且遇到包括这个在内的问题(尤其是作曲家)。我认为这是因为在作曲家自动加载器中通过spl_autoload_register()覆盖了__autoload()

有没有一种好的、快速的方法可以在不重写整个项目的情况下开始集成命名空间?

您仍然可以将 Composer 与 PSR-0 或类映射一起使用。

我可能会先使用类图。优点:每个文件可以处理多个类。可以处理任意文件结构。

使用 Composer 的自动加载实现后,您可以开始删除现有的自动加载器或可能分布在各个地方的require_once/include_once

一旦你摆脱了所有的文件加载遗留并建立了Composer自动加载,你可以尝试根据PSR-0组织代码。这可能需要您重命名文件并重新定位它们。也可能是类没有任何可识别的前缀 - 这对您的 PSR-0 自动加载不利,因为所有这些文件都属于一个文件夹。

请注意,在此之前,您尚未更改任何类的名称,因此代码应在没有任何更改的情况下运行。

使用命名空间没有非常明显的优势。您将被迫重命名所有类,重命名该类名的所有用法,总而言之,如果单独使用,它不会提供任何明显的好处。

另一方面,你听起来也想重构其他所有内容,因此切换到命名空间可以用作"较新"代码的信号。

您可以同时使用 PSR-4 和 PSR-0,因此它不会影响您重命名类(除了在所有位置进行必要的类名更改)。

相关内容

  • 没有找到相关文章