【发布时间】:2012-08-10 08:14:03
【问题描述】:
我想了解人们对使用静态类而不是命名空间的看法。我来自 C++ 背景,非常喜欢它的语法以及它如何让您构建代码。我最近决定需要将我的代码分组为逻辑单元,而不仅仅是文件。例如,我更喜欢像 User::login 这样的调用而不是 user_login。所以,我做了一些谷歌搜索,发现 PHP 有命名空间,我松了一口气。不过我的解脱并没有持续多久,我真的不喜欢这种语法。它给我的函数调用增加了更多的混乱。所以,目前我正在使用静态类来模拟命名空间。这有什么缺点吗?
我在PHP Namespaces vs Classes with static functions 发现了一个类似的问题,但没有太多讨论。
另外,有没有办法避免以下情况:
class Test {
public static void myFunc() {
Test::myOtherFunc();
}
public static void myOtherFunc() {
}
}
我认为可以在不指定名称的情况下调用同一类中的函数,但显然不是。是否有任何解决方法(例如在 C++ 中有 using 关键字)。
【问题讨论】:
-
self::和$this->在 PHP 中分别用于调用自己的静态和实例方法。 -
所以没有办法隐含限定条件?即检查当前类的功能?
-
不,但我发现明确是一件好事 :)
-
嘿,我喜欢它在类之间是显式的,但我习惯它在一个类中是隐式的。哦,好吧,我想我最终会习惯的。
-
你应该试着超越审美的不和谐。这将比仅仅因为您更喜欢双冒号而模仿命名空间更有益。
标签: php namespaces static-class