Voici une petite RFC qui visait à simplifier notre vie : default constructors.

Cette RFC proposait que, dans le constructeur d’une classe, il soit toujours possible d’appeler parent::__construct(), quelque soit la classe parente, y compris si celle-ci ne définissait pas explicitement de constructeur.
En somme, l’appel de parent::__construct() n’échouerait plus jamais.

Une fois cette idée implémentée, une classe enfant pourrait appeler le constructeur de sa classe parente, même si celle-ci n’en a pas.
Et le jour où un constructeur serait ajouté à la classe parente, il serait alors effectivement appelé — sans que nous n’ayons à repasser sur toutes ses classes enfant pour ajouter cet appel (comme nous devons le faire aujourd’hui).

Cela aurait également facilité les choses pour certaines classes fournies par PHP : en général, on dit que lorsqu’une classe de PHP est étendue en espace utilisateur, la classe fille doit impérativement appeler le constructeur de la classe parente fournie par PHP… Sauf que certaines de ces classes fournies par PHP n’ont pas de constructeur. C’est donc au développeur d’aller chercher, au cas par cas, s’il doit ou non appeler celui-ci.
Avec cette RFC, il ne serait plus nécessaire de s’interroger, puisqu’il deviendrait systématiquement possible d’appeler le constructeur de la classe parente, qu’il soit ou non défini.

Les votes ont été ouverts le 17 janvier 2015 et clôturés le 24 janvier 2015 et nous avons exprimé un avis positif (de peu) sur internals@.
Une majorité au 2/3 de oui était requise pour l’adoption de cette RFC, mais un résultat de 27 voix pour et 20 contre a décidé de son rejet.