升级到5.4后PHP中的语法错误

时间:2015-04-09 13:20:13

标签: php

自从我从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();
}

上面的代码一直有效,直到升级。谢谢你的帮助。

2 个答案:

答案 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();出口();到这个方法的顶部。