2013-10-23 44 views
1

在C#和java世界中,我们习惯于将名称空间准确映射到文件夹结构,并且通常以com.myCompany作为前缀。 现在我开始使用PHP项目重构任务:重构期间PHP命名空间的最佳实践?

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

这里是我的问题:

  1. 我应该使用命名空间为所有的项目文件,或者只使用 那些我们想公开,或完全不使用?
  2. 如果使用命名空间,它是否应严格地映射文件夹结构(所以可以使用自动加载更简单的方式),还是休闲风格是好的?
  3. 我应该使用com/myCompany作为前缀还是不是?
  4. 如果有什么好的工具来做这种安全的重构? (我使用PHPStorm但它无法找到所有的用法一些代码是 动态)

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

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

+0

我知道这是一篇旧文章,但我强烈推荐PHPStorm,如果您正在进行重构 - 它将允许您命名空间类,它将移动类到正确的文件夹并更新对该类的任何引用与命名空间。 – rgvcorley

回答

2

如果您重新调整文件以符合PSR-0标准,它会让您的生活更轻松。请注意,该标准不会强制您使用名称空间。如果您知道基于类名的文件的位置,则加载速度将比您需要搜索该文件的速度更快。

由于类名较短,因此命名空间可能会使编码生命变得更容易一些。如果您导入任何其他外部代码(有许多有用的库),您将避免与您的类名称冲突。但他们不是终极的银弹,所以如果你认为这会浪费时间,那么你可以没有他们。

+0

谈到较短的名字,我在这里发现了一篇有趣的文章http://brady.lucidgene.com/2012/04/how-to-create-good-namespaces-and-class-names-in-php-5-3/它显示更短并不总是更好:)所以我想知道是否真的需要添加像/ com/myCompany/proj/controller这样的命名空间,并将类ABCController重命名为ABC。似乎没有从中获益。 – ElfeXu