Démonstration :

<?php
class test1 {
protected static $a = 0;
public static function go () {
echo self::$a;
}
}
class test2 extends test1 {
protected static $a = 1;
}
test2::go ();

En PHP 5.2 et PHP 5.3, le code ci-dessus va renvoyer 0. Pas normal me dites-vous, et vous avez bien raison. En effet, l'analyse du mot-clef 'self' se fait au moment de la compilation, donc son utilisation ignore toutes les classes étendues.

Et voici la magie de PHP 5.3. Réécrivez la fonction go comme suit dans test1 :

<?php
public static function go () {
echo static::$a;
}

Oh magie, le code affiche bien "1" !

En conclusion : Les apports de PHP 5.3 vont bien au delà de ce point de détail. Toutefois la version est encore largement buggée et inutilisable en production. Mais surveillez les nouveautés (notamment au niveau du langage objet), il y a vraiment de bonnes choses dedans.