use*_*427 5 php namespaces static-class
我想要衡量人们对使用静态类而不是命名空间的看法.我来自C++背景,我非常喜欢它的语法以及它如何让你构建代码.我最近决定将代码分组为逻辑单元而不仅仅是文件.例如,我更喜欢User :: login to user_login之类的调用.所以,我做了一些谷歌搜索,并松了一口气,发现PHP有名称空间.我的解脱并没有持续多久,我真的不喜欢语法; 它为我的函数调用增加了更多的混乱.所以,目前我正在使用静态类来模拟命名空间.这有什么缺点吗?
我在PHP Namespaces vs Classes中发现了一个类似的问题,但是没有进行大量的讨论.
还有,有办法避免以下情况:
class Test {
public static void myFunc() {
Test::myOtherFunc();
}
public static void myOtherFunc() {
}
}
Run Code Online (Sandbox Code Playgroud)
我假设可以在不指定名称的情况下调用同一类中的函数,但显然不是.是否有任何变通方法(例如在C++中有using关键字).
巧合的是,我实际上正朝着完全相反的方向前进:
使用静态类来模拟命名空间的东西是你不能在多个文件中组织它们,所有东西都必须在一个文件中定义; 这可能取决于个人品味.
关于静态类的另一件事是,你从没有任何状态开始,慢慢地一些状态管理进入,你最终得到一些奇怪的锁定依赖.国家应该保留用于实例.目前我唯一值得注意的静态类是站点范围的配置.
最后,静态类中的自引用是显式的,而在命名空间中,它的工作原理与C++完全相同:指定函数名称,首先在命名空间中查找它.