提问人:Peter Turner 提问时间:2/27/2009 最后编辑:John SlegersPeter Turner 更新时间:4/12/2022 访问量:189545
PHP 需要T_PAAMAYIM_NEKUDOTAYIM?
PHP expects T_PAAMAYIM_NEKUDOTAYIM?
答:
评论
var_dump(empty(TRUE))
foreach($cats as cat
cat
::
cat
cat
$mouse
foreach($cats as cat::$mouse)
php
::
cat
$mouse
cat
在希伯来语中是“双冒号”的意思。
评论
它是 PHP 中运算符的名称。它的字面意思是“双冒号”。出于某种原因,他们用希伯来语命名它。检查您的代码语法,并在适当的位置放置一个 :-)::
::
评论
来自维基百科:
在 PHP 中,作用域解析运算符也称为 Paamayim Nekudotayim(希伯来语:פעמייםנקודתיים),意思是“双冒号” 希伯来语。
“Paamayim Nekudotayim”这个名字是在 以色列开发的 Zend Engine 0.5 用于 PHP 3。虽然已经 让许多不会说希伯来语的开发人员感到困惑,它仍然 在 PHP 5 中使用,如以下示例错误消息所示:
$ php -r :: 解析错误:语法错误,意外 T_PAAMAYIM_NEKUDOTAYIM
从 PHP 5.4 开始,有关范围解析运算符的错误消息 仍然包括这个名称,但已经稍微澄清了它的含义:
$ php -r :: 解析错误:语法错误,意外的 '::' (T_PAAMAYIM_NEKUDOTAYIM)
来自官方 PHP 文档:
范围解析运算符(也称为 Paamayim Nekudotayim)或 更简单的术语,双冒号,是一个允许访问 类的静态、常量和重写属性或方法。
从类定义外部引用这些项时,请使用 类的名称。
从 PHP 5.3.0 开始,可以使用 变量。变量的值不能是关键字(例如 self、parent 和静态)。
起初,Paamayim Nekudotayim 似乎是一个奇怪的选择 命名双冒号。但是,在编写 Zend Engine 0.5 时 (它为 PHP 3 提供支持),这就是 Zend 团队决定的称呼。它 实际上确实意味着双冒号 - 在希伯来语中!
评论
当您将 PHP 中的常量应用于 empty() 函数时,也会出现这种情况:
if (!empty(SOME_CONSTANT)) {
}
我就是这种情况。我用这个解决了它:
$string = SOME_CONSTANT;
if (!empty($string)) {
}
评论
对我来说,这发生在类函数中。
在 PHP 5.3 及更高版本中工作正常;当我将代码交换到服务器时,无论出于何种原因,该服务器的版本号较低,它都会抛出此错误。$this::$defaults
就我而言,解决方案是使用关键字而不是:self
$this
self::$defaults
工作得很好。
当使用以下方法时,这可能会发生在 foreachs 上:
foreach( $array as $key = $value )
而不是
foreach( $array as $key => $value )
评论
我非常了解希伯来语,所以为了为您澄清“Paamayim Nekudotayim”这个名字,释义的意思是“双冒号”,但从字面上翻译:
- “Paamayim”的意思是“两个”或“两次”
- “Nekudotayim”的意思是“点”(点亮“洞”)
- 在希伯来语中,nekuda 的意思是一个点。
- 复数形式是nekudot,即点,用作元音
- 之所以称它为Nekudo-tayim,是因为后缀“-ayim”也有“两个”或“两个”的意思,因此表示“两次,两个点”,或者更常称为范围解析运算符。
::
评论
编辑:不幸的是,从 PHP 8.0 开始,答案不是“不,不再”。这个RFC没有像我希望的那样被接受,建议改成;但它被拒绝了。T_PAAMAYIM_NEKUDOTAYIM
T_DOUBLE_COLON
注意:出于历史目的,我保留此答案。实际上,由于 RFC 的创建和某个时候的投票率,我创建了这个答案。另外,我保留这个是希望它在不久的将来被接受。
这刚刚发生在我使用双引号的字符串赋值中。我在 POST 变量上缺少一个结束大曲......
"for {$_POST['txtName'] on $date"
;
本来应该是
"for {$_POST['txtName']} on $date"
;
我无法解释为什么。我的意思是,我看到了会破坏代码的错误,但我不明白为什么它引用了类错误。
这刚刚发生在我身上的 foreach 循环中。我无意中打字,PHP反对第一个.($array as $key as $value)
as
评论
empty
::
$