我目前作为 php 项目的学生工作,该项目从一开始就在增长,并且有大约 1800 个 php 文件。
问题是:它完全没有命名空间,也没有任何 PSR-4 等建议。这个技术债务很强大:)。
我们想使用作曲家(以及更多的树枝和一些库)并且遇到包括这个在内的问题(尤其是作曲家)。我认为这是因为composer-autoloader 中的__autoload()
via被覆盖了?spl_autoload_register()
有没有一种好的快速的方法来开始集成命名空间而不重写整个项目?
我目前作为 php 项目的学生工作,该项目从一开始就在增长,并且有大约 1800 个 php 文件。
问题是:它完全没有命名空间,也没有任何 PSR-4 等建议。这个技术债务很强大:)。
我们想使用作曲家(以及更多的树枝和一些库)并且遇到包括这个在内的问题(尤其是作曲家)。我认为这是因为composer-autoloader 中的__autoload()
via被覆盖了?spl_autoload_register()
有没有一种好的快速的方法来开始集成命名空间而不重写整个项目?
您仍然可以将 Composer 与 PSR-0 或类映射一起使用。
我可能会先使用类图。优点:每个文件可以处理多个类。可以处理任意文件结构。
使用 Composer 的自动加载完成后,您可以开始删除现有的自动加载器或那些require_once/include_once
可能遍布各处的自动加载器。
一旦你摆脱了所有文件加载遗留问题并建立了 Composer 自动加载,你可以尝试根据 PSR-0 组织代码。这可能需要您重命名文件并重新定位它们。也可能是类没有任何可识别的前缀 - 这对您的 PSR-0 自动加载不利,因为所有这些文件都属于一个文件夹。
请注意,到目前为止,您还没有更改任何类的名称,因此代码应该在没有任何更改的情况下运行。
使用命名空间并没有非常明显的优势。您将被迫重命名所有类,重命名该类名称的所有用法,总而言之,如果单独使用它不会提供任何明显的好处。
另一方面,您听起来确实想重构其他所有内容,因此切换到名称空间可以用作“更新”代码的信号。
您可以同时使用 PSR-4 和 PSR-0,因此它不会影响您的类重命名(除了所有地方都需要更改类名)。