自从我从PHP 5.2x或5.3x(不确定哪个)升级到5.4x后,我收到以下错误:
syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM, expecting T_VARIABLE
以下是生成错误的代码。基本上我有一个类来创建SVG图像,其中包含在派生类中定义的静态draw()
方法和基类上的静态帮助函数drawPng()
,它使用Imagick将SVG转换为PNG。错误位于标记的行。
static function drawPng($filename, $data, &$options=array()) {
ob_start();
static::draw($data, $options); // <-- Error occurs
$svg = ob_get_clean();
$im = new Imagick();
if(!$im) die('Imagick not installed');
$bg = (empty($options['background']) ? 'transparent' : $options['background']);
$im->setBackgroundColor(new ImagickPixel($bg));
$im->readImageBlob($svg);
$im->setImageFormat('png');
if($filename) $im->writeImage($filename);
else echo $im->getImageBlob();
}
上面的代码一直有效,直到升级。谢谢你的帮助。
答案 0 :(得分:3)
T_PAAMAYIM_NEKUDOTAYIM
是希伯来名字(由于某种原因 - Zend由以色列人开始,如ceejayoz指出的那样。)用于双重冒号,又名::
将static
更改为self
:
static::draw($data, $options);
self::draw($data, $options);
答案 1 :(得分:0)
我认为你弄乱了PHP版本并实际在PHP 5.2上启动了这段代码。在PHP 5.2中会发生此错误,因为没有static :: access。 PHP 5.4中的T_PAAMAYIM_NEKUDOTAYIM错误消息也会提及&#34; ::&#34;,而你的不提及,这是另一个提示你运行错误的PHP版本。
验证add echo phpversion();出口();到这个方法的顶部。