命名空间运营商......有什么大不了的?

nic*_*ckf 12 php namespaces

有人可以向我解释使用反斜杠作为命名空间运算符究竟有什么不好吗?我读了很多关于它的嘲笑言论.一个StackOverflower甚至说因为它而放弃了PHP.

是的我知道反斜杠作为字符串中的转义字符具有特殊含义,但它并不比使用更糟糕->,或者.像许多其他语言中的点一样.

有点让我想起任天堂在宣布Wii名称时的所有嘲弄.每个人都大惊小怪,然后一旦它出来,你已经习惯了,没有人关心,他们继续前进.

所以,请赐教.这有什么不好的?你会建议什么呢?

too*_*php 12

有什么不好的:你能在下面的代码中发现错误吗?

if(class_exists("namespace1\namespace2\myClass"))
    echo "This will never be true";
Run Code Online (Sandbox Code Playgroud)

我会建议什么:不幸的是,'\'是唯一可用的单个字符.如果PHP6是我的设计,我会用关键字替换所有的按位运算符(^,&,|,〜)(因为它们使用得很少)并使用'|' 作为命名空间分隔符.事实上,我会建议更多简单的语法更改,以使PHP更易于读写,但更容易使用Python代替...

  • 难道你不能使用单引号,所以PHP不解析字符串文字中的任何文字? (5认同)
  • 我发现"\"键在德语键盘上不方便.另外,没有其他语言(afaik)使用反斜杠作为ns分隔符导致另一种方式做同样的事情略有不同. (3认同)
  • 你不能使用一个点,因为在这样的语句中:MyNameSpace.MyClass它将寻找两个名为"MyNameSpace"和"MyClass"的常量字符串相互追加(可能会导致一些警告然后这个:"MyNameSpaceMyClass").同样,如果你有一个具有相同名称的类和命名空间, - >会导致歧义. (2认同)