De l’intérêt de MVC pour tester son application
Quand on utilise une couche d'abstraction de base de données, comme PDO ou n'importe quelle couche écrite en PHP, la raison invoquée est souvent de pouvoir supporter différentes bases de données. Dans la pratique, sauter du jour au lendemain de MySQL à Oracle, ou le contraire, ne se fait jamais aussi simplement. En pratique, c'est même assez fallacieux comme argument.
Communément, il y a une bonne raison pour utiliser une telle couche : faire des tests. Et ça, cela arrive beaucoup plus souvent que de changer de base de données. À l'aide d'un simple changement de configuration, la couche d'abstraction de base de données vous permet de faire tourner facilement votre application sur une base de tests, ou celle de production, ou celle de recette, ou encore de vieilles versions... En disposant de jeux de données de tests, il devient alors possible de reproduire différentes situations, voire même de les faire cohabiter.
C'est une application qui justifie même l'utilisation de MVC de manière pratique : on utilise MVC au quotidien pour pouvoir faire des tests d'une partie de l'application sans perturber l'autre. C'est le principe même de séparation des objectifs.
En fait, la souplesse de la couche d'abstraction est également disponible avec le moteur de gabarits (aussi appelée la vue). Combien d'entre vous se plaignent de devoir envisager d'installer Selenium pour faire tourner des tests sur les gabarits ? C'est long, ça fait peur.
Or, un truc tout simple consiste à utiliser les gabarits pour faire les tests : au lieu de produire une page HTML complexe et pleine de Javascript et de CSS, vous pouvez produire une page XML ou JSON, qui contient toutes les informations à afficher, et dépouillée de la couche de présentation. En fait, n'importe que format facile à analyser dans le cadre de vos opérations sera une bonne idée.
Les tests unitaires deviennent alors beaucoup plus aisés à écrire, et vous ne dépendez plus de la couleur du bouton "OK", ou de la CSS. Vous appelez simplement le site, qui produit une page contenant les informations sans leur présentation. Si les bonnes informations sont présentes, il ne restera plus qu'à tester effectivement les couleurs du site : la logique métier est maintenant sous contrôle.
C'est d'autant plus intéressant que l'on utilise ici les gabarits de deux manières : une pour les tests, et une pour la production. Il manque encore une utilisation tierce des gabarits pour avoir trois utilisations modulaires, et être tranquille quant à la qualité de l'interface modèle / gabarit. Quand on met en place une interface, il faut généralement trois utilisations différentes pour être sûr que l'interface est bien modulaire.
En utilisant MVC pour faire les tests, vous allez gagner beaucoup en qualité de code : d'abord parce que vous allez faire des tests automatisables sur une partie de votre application; ensuite parce que vous allez utiliser la structure de votre application et non plus vous targuer d'utiliser simplement un motif de conception; et aussi comprendre un peu mieux vos différentes interfaces.
Support de la conférence « Maîtrise du développement PHP » à Solutions Linux 2010
Le salon Solutions Linux s'est tenu la semaine dernière. J'ai eu le plaisir d'y donner une conférence sur la maîtrise du développement PHP dont voici le support.
L'axe retenu était de partir de problématiques simples auxquelles sont confrontées toutes les entreprises et d'y apporter des solutions techniques et méthodologiques. Cela va des solutions classiques car si ça va sans dire, ça va mieux en le disant, à des approches plus novatrices.
Interview de Damien Seguy par Intelli’N Tv
Damien a été interviewé début février par le Intelli'N Tv, la web télévision dédiée à l'Open Source.
Il rappelle dans cette vidéo les qualité de PHP et ce que recouvre l'industrialisation de PHP. Il évoque également la place des frameworks et des CMS dans cette chaîne d'industrialisation.

Interview de Damien Seguy par Intelli'N Tv
Conférence sur l’industrialisation PHP à la 3e édition de Be Zend
J'aurai le plaisir de présenter une conférence sur l'industrialisation de PHP lors de la 3e édition de la conférence Be Zend qui aura lieu le 25 mars à Saint Quentin, en Picardie.
A l'origine organisée autour de Zend Framework, cette conférence ouvre ses horizons à d'autres thématiques comme l'industrialisation de PHP ou encore les web services.
Organisée par l'INSSET, une annexe de l'Université Jules Verne d'Amiens, cette conférence permet de faire se rencontrer des entreprises et des prestataires locaux ainsi que les élèves de licence pro web développeur qui sont à l'origine de l'évènement.
Les inscriptions se font sur le site de la conférence.
Vers une convergence des frameworks PHP ?
Ces dernières semaines ont été propices aux annonces dans le monde des frameworks PHP. Tandis que Zend annonçait le début du travail sur la version 2 de son framework, Sensio Labs sortait une pré-version de Symfony 2.0. Ces deux frameworks devraient sortir pour la fin de l'année ou au début de l'année prochaine. Devant ces annonces importantes, on pourrait s'attendre à un choc des titans pour la domination du marché des frameworks PHP mais la réalité est plus complexe et plus intéressante.
Une vision commune
Dès le début ces deux frameworks ont été conçus par des entreprises pour des entreprises. Chacun a bien entendu su créer une communauté forte autour de son produit mais la vocation première est de consolider l'arrivée de PHP en entreprise.
Pour cela, ils ont mis en place différentes mesures qui rassurent les DSI :
- Licence Open Source permissive
- Support commercial
- Certification (Pour Zend Framework seulement pour le moment)
- Formation
- Documentation abondante
- Tests unitaires
C'était particulièrement important devant la myriade de frameworks dont il était bien difficile d'évaluer la pérennité. Ce point est crucial lorsqu'on investi dans des développements importants.
Des passerelles techniques
Depuis longtemps, le tutoriel de Symfony propose d'implémenter un système de recherche en utilisant le composant Zend_Search_Lucene qui fait partie de Zend Framework. Fabien Potencier, le meneur du projet Symfony, a également annoncé lors de la conférence Symfony Live 2010 que deux composants supplémentaires de Zend Framework seront bientôt utilisés dans Symfony. Il s'agit de Zend_Log et Zend_Cache qui, comme leurs noms le laisse supposer, permettent respectivement de gérer la journalisation des messages et le cache applicatif.
Il a également indiqué que le framework allait abandonner son outil maison de tests unitaires au profit de PHPUnit, projet fortement établi et utilisé pour tester Zend Framework.
De son côté, Zend n'est pas en reste. La société a récemment annoncé que Doctrine serait utilisé par la version 2 de son framework. Cet ORM est un projet indépendant mais qui est également utilisé par Symfony. Par ailleurs, son meneur actuel, Jonathan H. Wage, est employé par Sensio Labs.
Une volonté de souder la communauté
Au-delà des aspects techniques, il semble y avoir une réelle volonté de la part des deux meneurs de ces projets pour travailler ensemble au lieu de se livrer une guerre inutile.
La présence de Matthew Weier O'Phinney, le responsable de Zend Framework, à la conférence Symfony Live 2010 à Paris est un signe fort de cette communication entre les deux projets. Les propos de Fabien Potencier confirment cette volonté de souder la communauté PHP qui s'égare parfois dans des querelles de chapelles stériles.
I would love if people from different framework communities can work together more often, like what we have done with the PHP 5.3 interoperability group. I would love if we can share more components. I would love to discuss how we can make our PHP community grow faster.
Is it a dream? I hope it's not. And I have a proposal. Let's organize an event where several PHP framework communities can discuss and share ideas. Anyone?
Cette conscience de la nécessité de coordonner les efforts des différentes communautés semblent dans l'air du temps car des représentants des principaux projets PHP ont travaillé ces derniers mois à définir une charte pour l'architecture des composants de leurs projets respectifs afin de faciliter l'interopérabilité entre eux.

