Неожиданный T_PAAMAYIM_NEKUDOTAYIM в PHP 5.2.x

Мне трудно понять, почему я получаю Unexpected T_PAAMAYIM_NEKUDOTAYIM ошибку в следующем коде, который мне кажется совершенно верным ...

class xpto
{
    public static $id = null;

    public function __construct()
    {
    }

    public static function getMyID()
    {
        return self::$id;
    }
}

function instance($xpto = null)
{
    static $result = null;

    if (is_null($result) === true)
    {
        $result = new xpto();
    }

    if (is_object($result) === true)
    {
        $result::$id = strval($xpto);
    }

    return $result;
}

Вывод в PHP 5.3 +:

echo var_dump(instance()->getMyID()) . "\n"; // null
echo var_dump(instance('dev')->getMyID()) . "\n"; // dev
echo var_dump(instance('prod')->getMyID()) . "\n"; // prod
echo var_dump(instance()->getMyID()) . "\n"; // null

Однако в предыдущих версиях я не мог сделать $ result :: $ id = strval ($ xpto); , кто-нибудь знает почему?

Есть есть ли обходные пути для этой проблемы?

5
задан hakre 30 August 2012 в 07:51
поделиться