Gum*_*mbo 333

它是双冒号运算符::(请参阅解析器标记列表).

  • 并不是的.测试这个`var_dump(空(TRUE))` (11认同)
  • @Web_Developer,发生这种情况的原因是因为如果你有一个`foreach($ cats as cat`,对于语法上有效的语句,'cat`之后唯一可接受的字符是`::`,因为它允许你指定一个某些类的静态属性叫做`cat`.例如,如果`cat`类有一个名为`$ mouse`的公共静态成员,那么`foreach($ cats as cat :: $ mouse)`是完全有效的`php`,但是在`cat`之后使用除`::`以外的任何语句都是语法错误.如果`$ mouse`不是`cat`的声明属性,你会得到一个致命的错误,但仍然没有语法错误. (4认同)
  • var_dump(empty(TRUE)) ,在 PHP 7.2 中只返回 bool(false) (4认同)
  • 不,我刚刚添加了一个返回相同T_PAAMAYIM_NEKUDOTAYIM的评估.我错误地发现了它. (2认同)

pat*_*ney 104

谷歌创造奇迹.

这是"双冒号" 的希伯来语.

  • PHP - 唯一可以在希伯来语中添加错误消息并且人们接受您的提交的语言。 (41认同)
  • @MattiVirkkunen **P**erplexing **H**ebrew **P**arser。 (35认同)
  • @MattiVirkkunen关于接受任何语言的任何错误,提交,语法的新语言?:) 我们能做到. (3认同)

Ily*_*man 53

它是::PHP中运算符的名称.字面意思是"双冒号".出于某种原因,他们用希伯来语命名.检查您的代码语法,并::在适当的位置放置:-)

  • 突出显示字符串是להדגישמחרוזת.从现在开始,我只会使用希伯来字符中的自定义array_push函数לדחוף_מערך.我相信我所有非希伯来语的同事都会喜欢它.几乎所有的开发团队都至少讲一种用非拉丁字符编写的语言.应该很有趣 :) (18认同)
  • @Raul好的,所以在我的下一个项目中,我会用意大利语写一些错误代码,我是意大利语!你期待什么,到处都是英语?:-) (5认同)
  • 希伯来语之所以是因为代码是由以色列人编写的.我不认为他们错过了那个错误,他们把它留在那里没有翻译作为提醒. (2认同)

Joh*_*ers 47

来自维基百科:

在PHP中,范围解析运算符也称为Paamayim Nekudotayim(希伯来语:פעמייםנקודתיים),意思是希伯来语中的"双冒号".

"Paamayim Nekudotayim"这个名字是在以色列开发的PHP 3中使用的Zend Engine 0.5中引入的.虽然许多不会说希伯来语的开发人员一直很困惑,但它仍然在PHP 5中使用,如此示例错误消息:

$ php -r ::解析错误:语法错误,意外T_PAAMAYIM_NEKUDOTAYIM

从PHP 5.4开始,有关范围解析运算符的错误消息仍包含此名称,但在某种程度上澄清了其含义:

$ php -r ::解析错误:语法错误,意外'::'(T_PAAMAYIM_NEKUDOTAYIM)

官方PHP文档:

范围解析运算符(也称为Paamayim Nekudotayim)或简单来说,双冒号,是一个允许访问类的静态,常量和重写属性或方法的标记.

从类定义外部引用这些项时,请使用类的名称.

从PHP 5.3.0开始,可以使用变量引用该类.变量的值不能是关键字(例如self,parent和static).

起初,Paamayim Nekudotayim似乎是一个命名双结肠的奇怪选择.然而,在编写Zend Engine 0.5(支持PHP 3)时,这就是Zend团队决定称之为的东西.它实际上意味着双冒号 - 希伯来语!

  • 它实际上是希伯来语口语。维基百科现在说:“在 PHP 中,作用域解析运算符也称为 Paamayim Nekudotayim(希伯来语:פעמדם נקודותתם‎,发音为 [paʔaˈmajim nəkudoˈtajim],第二个词是 נקודתתתם 的口语讹误,发音为 [nəkudaˈtajim]) ,这意味着“双冒号”希伯来语。” (2认同)

Max*_*Max 11

当您将PHP中的常量应用于empty()函数时,这也会出现:

if (!empty(SOME_CONSTANT)) {

}
Run Code Online (Sandbox Code Playgroud)

那是我的情况.我用这个来解决它:

$string = SOME_CONSTANT;
if (!empty($string)) {

}
Run Code Online (Sandbox Code Playgroud)

  • @不要惊慌:为什么不呢?empty()不仅测试变量是否存在,还测试它的值是否为"空"(如果是PHP,则零(0)也为空).这样的常量可以表示由用户改变的值 - 例如DB设置或某些真/假值以及代码开发人员在设计时不知道的其他值类型.这在API或代码框架中很常见.我只是不明白为什么Zend解析器的开发人员没有使用每个人都知道和理解的常用词,而是使用了一些希伯来词.我的意思是,它甚至不是很有趣. (6认同)
  • 为什么常量是空的? (2认同)

Sap*_*ick 11

我非常了解希伯来语,所以为了向你澄清“Paamayim Nekudotayim”这个名字,释义是“双冒号”,但按字面翻译:

  • “Paamayim”的意思是“两个”或“两次”
  • “Nekudotayim”的意思是“点”(字面意思是“洞”)
    • 在希伯来语中,nekuda 的意思是一个点。
    • 复数是nekudot,即像英语中的元音一样的点。
    • 它之所以被称为 Nekudo- tayim是因为后缀“-ayim”也意味着“两个”或“两次”,因此::表示“两次,两个点”,或者更普遍地称为范围解析运算符


MAC*_*rha 6

编辑:不幸的是,从 PHP 8.0 开始,答案不是“不,不再是”。这个RFC没有如我所愿被接受,建议T_PAAMAYIM_NEKUDOTAYIM改为T_DOUBLE_COLON;但遭到拒绝。

注意:我保留这个答案是出于历史目的。实际上,由于 RFC 的创建和某个时刻的投票比例,我创建了这个答案。另外,我保留这个是为了希望它在不久的将来能被接受。