1

我目前作为 php 项目的学生工作,该项目从一开始就在增长,并且有大约 1800 个 php 文件。

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

我们想使用作曲家(以及更多的树枝和一些库)并且遇到包括这个在内的问题(尤其是作曲家)。我认为这是因为composer-autoloader 中的__autoload()via被覆盖了?spl_autoload_register()

有没有一种好的快速的方法来开始集成命名空间而不重写整个项目?

4

1 回答 1

1

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

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

使用 Composer 的自动加载完成后,您可以开始删除现有的自动加载器或那些require_once/include_once可能遍布各处的自动加载器。

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

请注意,到目前为止,您还没有更改任何类的名称,因此代码应该在没有任何更改的情况下运行。

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

另一方面,您听起来确实想重构其他所有内容,因此切换到名称空间可以用作“更新”代码的信号。

您可以同时使用 PSR-4 和 PSR-0,因此它不会影响您的类重命名(除了所有地方都需要更改类名)。

于 2017-06-21T18:42:45.943 回答