Comme il m'arrive d'avoir du temps libre pendant mon stage, j'en profite pour lire de nombreux articles sur la programmation objet en PHP, la conception de sites, framework ou applications web.
Je vais donc vous faire une petite liste des plus intéressants. Beaucoup d'articles datent de 2004 ou même avant. La plupart sont en PHP 4, il faut donc savoir ce que l'on peut maintenant faire de mieux grâce à PHP 5 et son nouveau modèle objet.
Pour commencer, un petit tour sur la doc officielle et son paragraphe sur le langage objet en PHP 5. La lecture complète de ce paragraphe est plus qu'instructive, et changera sans doute votre vision des objets PHP.
La partie sur la surchage est très intéressantes, pour pouvoir faire des choses du genre $objet->variable = 'chouette';, où variable n'existe pas réellement en tant que propriétés de l'objet. La même chose est possible avec les appels de fonctions.
La petite page sur Réflexion et ses différentes classes/interfaces est tout aussi intéressante pour qui veut faire des instanciations et appels de méthodes dynamiquement et proprement.
Enfin, la minuscule page sur les masques introduit ce qui suit.
Qu'est-ce qu'un masque (ou design pattern ou patron de conception) ?
Wikipédia nous répond très simplement :
Un patron de conception est un concept destiné à résoudre les problèmes récurrents suivant le paradigme objet.
En lisant cet article, une fièvre studieuse est montée en moi pour lire tous les articles sur chaque patron de conception. Certains sont très peu explicites, il faut donc se creuser un peu la tête pour en voir l'application ou l'implémentation quand elle n'est pas donnée. Parfois, il est plus facile de lire le code et le comprendre, puis de remonter à la description pour comprendre à quoi cela sert vraiment. L'idée ici n'est pas d'utiliser tous ces patrons de conception, mais c'est d'en connaître leur existence et leur fonctionnement. Plus tard, si vous vous retrouver face à un problème susceptible d'être résolu par l'un de ces design pattern vous vous en souviendrez et vous pourrez l'appliquer rapidement, puisque vous l'aurez compris.
Ensuite, je me suis mis en tête de lire sur les différentes implémentations de ces patrons de conception PHP. C'est là que les vieux articles entre en jeux.
Le plus important est PHP Patterns, dont le dernier article date de 2005, mais dont la pertinence des articles et les exemples simples en font selon moi une référence. La partie la plus intéressante se trouve dans la partie design. Lisez-donc un maximum d'article en gardant à l'esprit que c'est du PHP4, et qu'il faudra donc repasser ça à la sauce PHP 5 à grands coups d'abstract, interfaces et autres...
Et puis avec ces lectures, j'atteri sur ce post à propos de Smarty et des moteurs de templates, de 2001 mais qui garde tout son sens encore maintenant. La plupart des arguments sont pertinents, quelques-uns un peu moins... Et puis là où ça devient encore plus intéressant, au délà de la discussion, c'est sur cette page où la personne donne un exemple utlra-léger mais ultra-fonctionnel d'un moteur de templates.
Et puis d'autres liens, donnés en vrac :
- Nombreux articles d'un type qui développe un framework open source
- Présentation du MVC (Wikipédia)
- Rapide présentation du MVP
Enfin, une liste de framework, tous ayant des points de vues différents et des philosophies différentes. Les regarder et se plonger un peu dans le code de chacun est long est fastidieux, mais croyez-moi, très instructif !
- CakePHP, souvent à comparer à Ruby on rails
- Sympfony Réaliser par l'entreprise française Sensio Labs
- Zend Framework
- onPHP et une ancienne doc Absolument gigantesque d'un point de vue objet, et même trop...
- Copix Français, très actif et utilisé !
- Jelix Français aussi, débuter par un ancien développeur de Copix
Et plein d'autres sur Wikipédia fr et un joli comparatif sur la version anglaise.
La branche des développeurs d'IBM a posté un premier billet sur un comparatif détaillé des 3 premiers cités ci-dessus, à suivre.
Voilà, bonne lecture à tous, et si vous en avez d'autres sous le coude, n'hésitez pas à les mettre en commentaires ici.