PHP 5.0 – La programmation orientée objet est possible

#php
Les principales nouveautés de PHP 5.0

Après une longue période de développement depuis la sortie de PHP 4.0 en 2000, PHP 5.0 est apparu en juillet 2004 reposant sur un moteur Zend Engine version 2.0.

En plus des nouvelles fonctions disponibles, des changements intéressants font leur apparition :

  • Simplification de l’utilisation du langage XML
  • Mise en place d’un modèle objet plus abouti
  • Intégration d’une base de données SQLite

La sortie de cette version est une petite révolution dans le monde PHP du fait des apports au niveau de la programmation orientée objet (POO) qui permet désormais de disposer d’une solution plus aboutie dans ce domaine.

Le nouveau modèle objet

Même s’il existait déjà une certaine notion de classe et d’héritage, l’évolution majeure de PHP 5.0 correspond au fait que les objets sont désormais gérés par des références et plus par leur valeur. Pour compléter cette avancée, voici les autres concepts qui sont apparus :

Visibilités : les propriétés ou méthodes d’une classe peuvent être définies comme étant privées (private), protégées (protected) ou publiques (public) afin de spécifier les accès de ces composants.

Abstraction : l’apparition de classes et méthodes abstraites permet de définir des méthodes et classes de haut niveau pouvant être étendues par d’autres classes.

Statique : la déclaration de membres ou méthodes statiques permet d’y accéder sans avoir besoin d’instancier la classe.

Final : on peut définir une méthode comme étant finale afin qu’il ne soit pas possible de surcharger cette dernière et une classe finale ne peut être étendue.

Interfaces : ces objets permettent de créer du code qui spécifie quelles méthodes et variables une classe peut implémenter. Une classe doit implémenter toutes les méthodes d’une interface.

Polymorphisme : parmi les trois types standards de polymorphisme, le polymorphisme ad hoc et le polymorphisme d’héritage sont proposés. Par contre, le polymorphisme paramétrique n’est pas envisageable du fait du manque de typage fort de PHP.

Exceptions : l’apparition d’exceptions pour la gestion des erreurs est une grande avancée.

Typage d’arguments : PHP est toujours aussi souple au niveau du typage de données mais il est cependant possible de définir des types de classe pour les arguments d’une méthode.

Fonctions magiques : PHP propose un certain nombre de fonctions standardisées commençant par « __ » qu’il est possible de surcharger. En voici quelques exemples :

  • La méthode __clone() pour dupliquer un objet
  • Les méthodes __construct() et __destroy() sont des constructeurs et destructeurs d’objets

Tout cela vous rappelle certainement les cours du langage Java ?

Un exemple concret

Voici pour exemple une classe PHP (Joueur.php) :

On peut alors appeler la classe précédent par la page afficheJoueur.php :

La prochaine étape, le packaging ?

Malgré l’apparition d’un concept d’auto chargement de classes, on peut tout de même regretter qu’il n’existe pas de système permettant de facilement gérer un ensemble de classes PHP à importer sous la forme de packages comme cela existe dans d’autres langages. Cela reste cependant possible à mettre en place en ayant une certaine rigueur de développement par l’intermédiaire d’une arborescence et la création d’un fichier général d’inclusion de composants.

Conclusion

Il est intéressant de noter que la plupart des design-patterns J2EE sont désormais utilisables dans le cadre d’un développement PHP (comme par exemple le modèle de développement MVC). Par ailleurs, de part les possibilités offertes par le modèle objet, l’apparition de frameworks (semblables à hibernate) permettent désormais de mettre en place des mécanismes de persistance de données.

Le principe de fonctionnement de PHP se rapproche de plus en plus des concepts mis en œuvre par les principaux concurrents dans le domaine des architectures web que sont J2EE et .Net. La version 5.0 de PHP démontre bien la volonté de mettre en place un modèle orienté objet afin de proposer une solution comparable au langage Java qui est la référence en la matière.

PHP entend cependant conserver sa simplicité (une des raisons essentielles de son succès) à travers un maintien de l’approche scripting sans typage fort. Ceci présente un certain paradoxe et à vouloir contenter adeptes de la simplicité et adeptes du tout objet, PHP brouille son discours au risque de destabiliser une partie de ses utilisateurs.

Jean-Sébastien MERCY

Références

1 http://www.php.net

2 http://www.nexen.net/interview/index.php?id=32