我们应该在PHP中命名功能吗?

ojr*_*ask 7 php architecture namespaces function

我们都知道,命名空间应用程序代码是最佳实践和PSR建议.PSR采取立场的唯一方法是在功能及其声明方面的空白和副作用.

但是与任何单个类无关的函数呢?它们应该是命名空间还是留在全局命名空间中?

一些开发人员说命名空间函数是不好的做法,但我无法理解为什么.

从我学习/阅读和推荐的有关命名空间功能的内容:

  • NO:不使用没有类的全局函数,因为它们无法自动加载(这意味着创建支持静态类或类似).
  • NO:不使用全局函数,因为它们无法导入/使用(始终需要完全限定的函数名).
  • 是:对全局函数使用名称空间来防止冲突并表示不属于PHP本身的函数(您可以放心地假设您正在调用正确的函数).
  • NO:不要将命名空间用于全局函数,因为函数不依赖于OO应用程序结构(有一点,但请参见前一点).

是否有全局功能的最佳实践和命名空间?目前我使用应用程序根命名空间用于全局应用程序相关的函数,但我一直在想为什么有些人强烈认为在对象(类,接口,特征等)之外不应该发生命名空间?

the*_*Dmi 8

命名空间是一个允许您在较小规模的构造上强加结构的概念.使用命名空间,您可以将所有内容放在一起.这些东西是类还是函数都没关系.如果你有一个只与两个或三个特定类一起使用的自由函数,我肯定会把这个函数放在与类相同的命名空间中.

您是否想要使用免费功能是一个不同的问题.许多OO语言(如Java和C#)都不支持它们.但是有些情况下函数不适合类.在这些情况下,我更喜欢创建自由函数(在适当的命名空间中).

话虽这么说,我很确定你也会在SO上得到YES和NO答案.因此,与您的团队讨论,并制定指南.