|
|
1
6
我不确定我是否理解你的意思。。。PHP常量与C预处理器宏不同。您不能创建宏并用它替换运算符,这只是行不通:
即使成功了,目的是什么?隐藏一种语言的语法,让它看起来像你更熟悉的另一种语言,这是一种相当浪费时间的行为,更不用说这会让其他程序员更难完成这个项目。如果你觉得语言X看起来更酷,那么就编写代码X而不是PHP:) 使现代化当使用单引号时,在要求名称空间分隔符为字符串的位置(如自动加载程序和回调)使用名称空间分隔符几乎没有困难,因为需要转义的位置仅在引号或另一个反斜杠之前,因此可以按原样编写:
在我看来,所有其他选项都像是不必要的复杂性:
|
|
|
2
6
是的,这就是你问题的答案。我确实使用了一个自定义的名称空间分隔符,因为
对我来说比
它可能只在我的自动加载器中使用,但如果几年后我碰巧读过它,我想快速理解代码。 |
|
|
3
1
现在,通过使用一种新的(PHP>5.5)方法通过使用 class name resolution (在PHP RFC中,它被称为 class name scalars ). 虽然使用充满类名的字符串对于各种魔法仍然很有用,尤其是自动加载,但使用完全限定的类名作为硬编码字符串很容易出错,对于IDE来说很难检测到。 这是如何回答最初的问题的:有时名称空间分隔符常量对于代码中非常特定的部分很有用,尽管我遇到的实际使用它的地方较少。 在您的示例中,您更愿意使用:
当这个问题的范围很小时,它将只用于代码的特定部分,这可能不会使PHP内置常量合法化。如果是这样的话,像scope操作符这样的其他操作符也应该作为常量包含进来。PAAMAYIM_NEKUDOTAYIM常数:“?(很抱歉这个小常数命名为phun) 按照这种方法,一个未实现的PHP特性可能会派上用场,那就是magic Class::namespace常量。 |