PHP静态类或命名空间

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关键字).

Ja͢*_*͢ck 5

巧合的是,我实际上正朝着完全相反的方向前进:

  1. 使用命名空间来组织域类(或函数)
  2. 使用依赖注入,否则我将使用静态类

使用静态类来模拟命名空间的东西是你不能在多个文件中组织它们,所有东西都必须在一个文件中定义; 这可能取决于个人品味.

关于静态类的另一件事是,你从没有任何状态开始,慢慢地一些状态管理进入,你最终得到一些奇怪的锁定依赖.国家应该保留用于实例.目前我唯一值得注意的静态类是站点范围的配置.

最后,静态类中的自引用是显式的,而在命名空间中,它的工作原理与C++完全相同:指定函数名称,首先在命名空间中查找它.