有人有T_PAAMAYIM_NEKUDOTAYIM吗?


当前回答

这可能发生在foreach时使用:

foreach( $array as $key = $value )

而不是

foreach( $array as $key => $value )

其他回答

对我来说,这发生在一个类函数中。

在PHP 5.3及以上版本中,$this::$默认值工作正常;当我把代码交换到一个服务器上时,不管出于什么原因,这个服务器的版本号更低,它抛出了这个错误。

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

Self::$defaults工作得很好。

它是双冒号操作符::(参见解析器令牌列表)。

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

if (!empty(SOME_CONSTANT)) {

}

那是我的案子。我用这个方法解决了这个问题:

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

}

这可能发生在foreach时使用:

foreach( $array as $key = $value )

而不是

foreach( $array as $key => $value )

编辑:不幸的是,从PHP 8.0开始,答案不再是“不,不再是”。这个RFC没有像我希望的那样被接受,建议将T_PAAMAYIM_NEKUDOTAYIM改为T_DOUBLE_COLON;但它被拒绝了。

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