1

在 C# 和 java 世界中,我们习惯于将命名空间精确映射到文件夹结构,并且通常以 com.myCompany 作为前缀。现在我开始处理 PHP 项目重构任务:

  • 该项目之前没有使用命名空间。
  • 通过使用带有前缀/后缀的长类名,它没有命名冲突。
  • 我们使用 spl_autoload_register 它只是在预定义文件夹下搜索文件。
  • 除部分模块外,我们不打算将完整的源代码共享给公众以供重用。
  • 最重要的是:我们进行重构的资源有限。

以下是我的问题:

  1. 我应该为所有项目文件使用命名空间,还是只用于我们想要公开的文件,或者根本不使用?
  2. 如果使用命名空间,是否应该严格映射文件夹结构(这样可以更简单地使用自动加载),还是休闲风格可以?
  3. 我应该使用 com/myCompany 作为前缀吗?
  4. 是否有任何不错的工具可以进行这种安全重构?(我使用的是 PHPStorm,但由于某些代码是动态的,因此无法找到所有用法。)

我想平衡最佳方法和重构所需的时间。感谢您在高级方面的帮助。

PS 我已经阅读了https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md。如果我做一个新的 PHP 项目,我肯定会遵循该指南。但是,我正在处理一个现有项目,所以我想知道我从严格使用命名空间中获得的好处是否会大于我花费的成本;如果我可以做出任何权衡,以尽量减少我需要做的改变。

4

3 回答 3

4

如果您重组文件以符合 PSR-0 标准,这将使您的生活更轻松。请注意,该标准并不强制您使用命名空间。如果您根据类名知道文件的位置,则加载速度将比您需要搜索文件时更快。

命名空间可能会使编码生活更轻松一些,因为类名更短。如果您导入任何其他外部代码(有很多有用的库),您将避免与您的类发生任何名称冲突。但它们不是终极灵丹妙药,所以如果你认为这会浪费时间,你可以没有它们。

于 2013-10-23T07:39:19.847 回答
1

1-3) 只需按照 PSR-0 https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md
4) 如果 PHPStorm 找不到用法,那么没有其他人会:) PHPStorm 具有“移动类”重构,这对此非常有用。

于 2013-10-23T07:37:54.470 回答
0

阅读 PSR(特别是 PSR-0 是关于命名空间的)。他们有一堆很好的编码标准。

https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md

不过,无法帮助您解决第四个问题

于 2013-10-23T07:37:41.713 回答