是否应命名全局帮助程序函数


Should global helper functions be namespaced?

假设我有一些辅助函数,例如a̶r̶r̶a̶y̶_̶r̶e̶d̶u̶c̶e̶'array_operation'。

我应该在全局命名空间中声明此函数并将其与核心array_*函数一起使用,还是应该在供应商特定的命名空间下使用它,例如 use function Vendor'Helpers'Arrays'array_operation;

全局命名空间的唯一缺点是可能不清楚函数的声明位置,但也意味着在想要使用它时不需要显式use函数。

哪种做法会被认为是更好的做法?

命名空间代码的原因是避免与其他供应商的代码发生命名冲突。这同样可以发生在类上,就像函数或常量(或变量,但没有人使用全局变量,是吗?您的函数是"帮助程序函数"这一事实无关紧要,它们仍然是函数。实际上,"帮助函数"往往具有相当通用的名称,因此更有可能与其他名称发生冲突。所以:是的,命名空间它们。

实际上,如果有意义的话,您可以考虑将它们维护为一个完全独立的包。在这个类别中,我个人最喜欢的一个是函数式PHP,这是一个非常好的"辅助函数"包,都围绕着提供函数式原语的前提。