PHP期望T_PAAMAYIM_NEKUDOTAYIM?

有没有人有T_PAAMAYIM_NEKUDOTAYIM

这是双冒号运算符:: :(请参阅parsing器令牌列表 )。

Google创造奇迹。

这是“双冒号”的希伯来语 。

这是PHP中的::运算符的名称。 它的字面意思是“双冒号”。 出于某种原因,他们用希伯来语命名。 检查你的代码语法,并在适当的地方放一个:: 🙂

维基百科 :

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

“Paamayim Nekudotayim”这个名字是在以色列开发的用于PHP 3的Zend Engine 0.5中引入的。尽pipe许多不懂希伯来语的开发者一直对此感到困惑,但它仍然在PHP 5中使用,正如这个示例错误消息:

$ php -r ::parsing错误:语法错误,意外的T_PAAMAYIM_NEKUDOTAYIM

从PHP 5.4开始,关于范围parsing操作符的错误消息仍然包含这个名字,但是已经澄清了它的含义:

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

从官方的PHP文档 :

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

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

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

起初,Paamayim Nekudotayim似乎是一个命名双冒号的奇怪select。 但是,在编写Zend引擎0.5(支持PHP 3)时,这就是Zend团队决定称之为的。 这实际上意味着双冒号 – 希伯来语!

在PHP中将常量应用于empty()函数时,也会出现这种情况:

 if (!empty(SOME_CONSTANT)) { } 

那是我的情况。 我解决了这个问题:

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

对我来说,这发生在一个类的function。

在PHP 5.3和以上$this::$defaults工作正常; 当我把代码换成一个服务器,无论出于何种原因,有一个较低的版本号,它抛出了这个错误。

在我的情况下,解决scheme是使用关键字self而不是$this

self::$defaults工作得很好。

这是我得到它。 我用双引号试了一下expression式的限制。 所以这是代码:

 $a = 5; echo "{$a == 5 ? 'yes' : 'no'} its possible"; 

产量

  PHP Parse error: syntax error, unexpected '==' (T_IS_EQUAL), expecting :: (T_PAAMAYIM_NEKUDOTAYIM) in php shell code on line 1