Inattendu T_PAAMAYIM_NEKUDOTAYIM en PHP 5.2.x

Je vais avoir du mal à comprendre pourquoi je me fais un Unexpected T_PAAMAYIM_NEKUDOTAYIM erreur dans le code suivant, qui semble perfecly valable pour moi...

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;
}

De sortie en 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

Dans les versions antérieures cependant, je ne peux pas faire $result::$id = strval($xpto);, personne ne sait pourquoi?

Existe-il des solutions de contournement pour ce problème?

J'ai copier/coller votre code dans un fichier php, et il s'exécute sans erreur.
Quelle version de PHP que vous utilisez? Aussi, suivez ce lien: codepad.org/wpT0g3VH.
Désolé, mal interprété votre question. Posté réponse ci-dessous.
Double Possible de PHP attend T_PAAMAYIM_NEKUDOTAYIM?

OriginalL'auteur Alix Axel | 2011-02-14