Industrialisation PHP

31mar/100

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.

11mar/100

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

1mar/105

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.

3fév/102

HipHop : Une révolution pour PHP ?

La rumeur courait depuis que dimanche un employé avait laissé entendre dans une interview que Facebook travaillait sur un projet secret visant à améliorer radicalement les performances de PHP. L'annonce officielle a été faite hier par l'équipe qui travaille sur ce projet dont le nom est HipHop for PHP.

Ce projet fait suite à toute une série d'améliorations initiées ou supportées par Facebook pour améliorer les performances de PHP comme les patchs proposés pour l'extension APC.

Un fonctionnement novateur

Avant de voir comment fonctionne HipHop, faisons un rappel sur le fonctionnement de PHP. Il s'agit d'un langage de script et non un langage interprété comme Java ou compilé comme C ou C++. Cela signifie qu'à chaque exécution PHP doit analyser lexicalement puis syntaxicalement le script appelé, le transformer en OP Code, un format binaire, puis exécuter cet OP Code. La phase d'analyse du script et de création de l'OP Code peut être optimisée à l'aide d'un cache d'OP Code comme APC.

HipHop a choisi une approche radicalement différente qui consiste à transformer le script PHP en code source C++ qui sera ensuite compilé avec les outils standards de ce langage.

Schéma de transformation de HipHop for PHP

La transformation se fait en trois étapes :

  • Analyse statique afin de déterminer qui déclare quoi et les dépendances afférentes ;
  • Détermination du type C++ le plus adapté, si la variable change de type au cours de sa vie un type "variant" proche des zval du Zend Engine sera utilisé ;
  • Transformation des structures PHP en code C++.

La substitution de HipHop au binaire PHP officiel vise à être transparente pour les développeurs mais bien entendu, tout cela n'est pas miraculeux et quelques contraintes existent.

Les limites

Tout d'abord, Windows n'est pas supporté et ne le sera probablement pas dans un avenir proche. Cela n'est pas un problème majeur car les serveurs de production des utilisateurs potentiels sont quasiment tous sous Unix mais cela pourrait compliquer son adoption car la majorité des postes de développement restent sous Windows.

Plus impactant, une fois compilé HipHop utilise son propre serveur web, ou son interface ligne de commande. Il est cependant possible de le coupler à Apache ou tout autre outil via un reverse proxy.

Par ailleurs, comme tout "émulation" d'un langage, HipHop ne peut être 100% compatible avec la dernière version de PHP. Il implémente aujourd'hui l'essentiel des fonctionnalités de PHP 5.2 ainsi que des extensions principales. Il faut noter que pour des raisons techniques évidentes certaines fonctions ne peuvent être supportées comme eval(), qui exécute dynamiquement du code PHP passé en argument.

L'absence d'eval() n'est pas très grave car il n'y a pratiquement aucune bonne raison d'utiliser cette fonction. En revanche, cela veut probablement dire que les assertions, qui évaluent du code à la volée pour vérifier le comportement de l'application, ne seront pas utilisables ce qui est dommage.

Quel public pour HipHop ?

Disons le clairement, en l'état actuel, HipHop n'est pas pour tout le monde. Le mode d'exécution classique de PHP a de beaux jours devant lui, notamment pour les hébergements mutualisés. La cible de HipHop est donc principalement les sites à fort et très fort trafic, à l'image de Facebook.

HipHop pourrait également être utile pour les scripts lancés en ligne de commande pour effectuer des opérations longues et récurrentes comme des imports. Ces opérations sont souvent lentes et consommatrices de CPU et de mémoire.

Révolution ou simple expérimentation ?

Il est un peu tôt pour se prononcer mais HipHop s'inscrit dans la tendance actuelle où l'on voit de plus en plus nettement se creuser un fossé entre les besoins simples des petites applications peu sollicitées, que l'on pourrait qualifier d'approche historique, et ceux beaucoup plus exigeants des applications critiques développées par des acteurs économiques de premier plan.

Le risque qu'engendre cette divergence des besoins et des moyens est une scission de la communauté PHP qui constitue l'une de ses forces. Pour le moment nous n'en sommes heureusement pas là et je doute que ce soit le but de Facebook qui une fois de plus réaffirme clairement son attachement à PHP pour sa simplicité et sa flexibilité.

Enfin, l'absence de support pour PHP 5.3 aura-t-elle un impact négatif sur l'adoption de ce dernier chez les grands comptes ?

20jan/102

PHPTV parle d’industrialisation de PHP

Damien a été interviewé par PHPTV sur le thème de l'industrialisation de PHP. Ce fut l'occasion de rappeler les éléments de base à mettre en place pour commencer à industrialiser ses développements PHP.

http://www.dailymotion.com/video/xbwt9q
12jan/102

Le Livre blanc Industrialisation PHP dans le numéro de janvier de PHP Solutions

Couverture du numéro de janvier 2010 du magazine PHP SolutionsLe magazine PHP Solutions distribue notre livre blanc sur l'industrialisation de PHP sur le CD-Rom qui accompagne son numéro de janvier.

Au sommaire de ce numéro, vous trouverez également :

  • Le Web service (partie 2)
  • Testez votre projet
  • L’intégration du .Net à PHP
  • Rédiger et optimiser le contenu d’un site pour les moteurs de recherche
  • Édition de documents OpenOffice ODF avec PHP
  • Création de fichier de logs
  • Votre boutique en ligne
  • La puissance des démarches descriptives
  • Envoyer des mails en PHP
  • Symfony 1.3 : nouvelles fonctionnalités et envoi d’emails
  • Manipuler les répertoires avec PHP
  • BeEF Exploitation

A noter que l'article "Le Web service (partie 2)" a été écrit par notre collègue Christophe Villeneuve.

6jan/104

Bientôt un plugin PHP pour Sonar

Sonar est un outil Open Source de gestion de la qualité du code. Il analyse le code d'un projet pour fournir de nombreux tableaux de bord qui permettent d'en évaluer la qualité. Pour cela, il utilise différents angles :

  • Architecture et conception ;
  • Duplications ;
  • Test unitaires ;
  • Complexité ;
  • Bogues potentiels ;
  • Règles de codage ;
  • Commentaires.

Il possède également un puissant mécanisme d'extensions qui permet de supporter de nouveau langages, d'ajouter des métriques et des règles d'analyse ou encore de s'intégrer au sein d'un processus d'Intégration Continue.

Jusqu'à présent Sonar était très orienté Java et il était impossible d'analyser un projet PHP. Ce temps est en passe d'être révolu grâce à l'arrivée prochaine d'une extension qui permettra d'intégrer les outils liés à l'analyse de la qualité du code qui sont portés depuis le monde Java (PHPUnit, PHP_CodeSniffer, PHP_Depend, etc.)

Tableau de bord de SonarCette extension est encore à l'état de prototype mais son potentiel est énorme.

2jan/102

Gartner rédige un rapport sur PHP

La célèbre société de recherche et de conseil Gartner a consacré début décembre un rapport à PHP, son passé, son présent et son avenir.

Ce rapport estime que :

  • Le nombre de développeurs PHP dans le monde va passer de 4 millions cette année à 5 millions à l'horizon 2013 ;
  • A court terme, PHP va rester une technologie web largement utilisée ;
  • Sur le long terme, PHP rencontrera une concurrence de plus en plus forte d'autres technologies comme ASP.NET, Java, Python ou encore Ruby.

Voici les recommandations de Gartner :

  • Envisagez d'utiliser PHP pour les projets qui requièrent une combinaison de technologies Open Source non-propriétaires pour construire des applications web simples.
  • Envisagez PHP comme un outil spécialisé pour la création d'interface de consultation pour des architectures SOA.
  • Envisagez d'adopter et de personnaliser des solutions PHP éprouvées comme Drupal ou MediaWiki  avant de partir de zéro.
6déc/092

PHP devient le troisième langage le plus utilisé selon TIOBE

La société TIOBE, spécialisée dans la qualité logicielle, propose depuis 2001 un classement des langages de programmation. La méthodologie de ce genre de classements est toujours sujet à caution mais cela a le mérite de donner des grandes tendances. Ce qui est calculé là n'est pas la qualité intrinsèque des langages, qui est impossible à quantifier, mais leur popularité à travers le nombre de développeurs, de formations et d'acteurs économiques qui y ont trait.

Le classement de décembre 2009 montre l'arrivée de PHP dans le trio de tête, juste après Java et C, passant du même coup devant C++ et Visual Basic.

Index TIOBE Programming Community - Décembre 2009

A mon sens, ces chiffres illustrent deux choses : la place grandissante qu'occupent les technologies web face au client lourd et la position de fer de lance de PHP dans ce mouvement.

1nov/090

Conférence sur l’industrialisation au Forum PHP 2009

L'édition 2009 du Forum PHP approche à grand pas maintenant. Parmi les nombreuses conférences qui y seront données, l'une d'elle traite directement de l'industrialisation de PHP. Elle sera animée par Damien Seguy, co-auteur de ce blog, et Olivier Hoareau, un spécialiste de ces problématiques.

Durant cette présentation, ils présenterons les composants d'une usine de développement PHP complète, et comment l'utiliser pour industrialiser efficacement vos développements afin de garantir la qualité et la robustesse de vos applications.