我有一些通用的函数在任何类中都没有真正意义上的静态方法。我想将它们封装在命名空间下,这样就不会与全局范围中定义的函数发生冲突。对于我的命名空间类,我遵循广泛采用的模式,其中诸如\ My \ Namespaced \ MyClass的类存在于包含路径上的My / Namespaced / MyClass.php中。
是否应该放置命名空间函数的最佳实践?现在我将它们放在同一名称空间下保存类的目录中的“functions.php”中。例如\ My / Namespaced \ myFunction存在于My / Namespaced / functions.php中。
此外,有没有办法像自动加载类一样自动加载这些函数?
答案 0 :(得分:5)
此外,有没有办法像自动加载类一样自动加载这些函数?
不适用于全局功能,但如果......
是否应该放置命名空间函数的最佳实践?
我会考虑使用对象而不是“最佳实践”,但我们都知道它并非完全正确。
全局函数没有自动加载功能,您可以将函数作为静态函数封装到类中,然后自动加载器就会开始运行。所以这可能是一个建议,但是你应该清楚这些静态函数对你的整体设计的影响。
所以说:如果你对全局函数没问题,那么你可能对全局静态类函数没问题。如果你更改了一个类的名称(比如任何全局函数名),它们就会中断,但是你创建了一些可以自动加载并且与你的文件命名方案兼容的东西。
编辑:当我写全局时,我的意思是函数的完全限定名,就是以\
开头的那个。请参阅Name resolution rules Docs。
答案 1 :(得分:2)
不幸的是,没有自动加载功能(因为PHP开发人员决定这样......),因此你必须考虑,如何获得函数文件包含。例如,你可以使用一个函数(比如importFunction($namespace)
;它只是将名称空间映射到文件名并包含文件),或者你可以包含每个包含函数的文件(在启动时等) 。