Industrialisation PHP

11mai/100

2 000 téléchargements pour le livre blanc Industrialisation PHP

A peine 6 mois après sa publication, le livre blanc Industrialisation PHP vient de franchir la barre des 2 000 téléchargements. Ce chiffre important montre l'intérêt actuel des entreprises pour les problématiques d'industrialisation des développements PHP.

En près de 60 pages, ce livre blanc dresse un panorama des outils et des méthodes qu'il est possible de mettre en place au sein d'une entreprise pour produire des projet de qualité en respectant à la fois les délais et le budget. Quelque soit le degré d'avancement des procédures d'industrialisation dans votre entreprise, vous trouverez probablement dans ce livre blanc des éléments pour améliorer vos pratiques.

Pour fêter l'évènement, nous travaillons actuellement sur une version remaniée qui tiendra compte des remarques qui nous ont été faites et apportera quelques compléments notamment au niveau des outils. Par ailleurs, des illustrations supplémentaires et une bibliographie plus fournie seront également au menu de cette nouvelle édition qui devrait sortir avant l'été.

10mai/100

Annonce de l’édition 2010 des PHP Days

L'édition 2010 des PHP Days a été annoncée par Alter Way Formation il y a quelques jours. Cette année, l'accent sera mis sur l'industrialisation de PHP. Damien et moi auront la joie de présenter plusieurs sessions sur ce thème aux côté de notre collègue Julien Pauli.

L'évènement, qui se déroulera les 8 et 9 juillet prochains à Paris,  est composé de 4 sessions d'une demi-journée :

  • Panorama de l''industrialisation de PHP
  • L'environnement de travail
  • Les bonnes pratiques de programmation
  • Gestion de projet et méthodes

Les inscriptions se font sur le site de PHP Days.

30avr/100

Revue de presse PHP de la semaine 17 (2010)

Voici la revue de presse de la semaine qui vient de s'écouler.

Doctrine 2 Beta 1 released

Après de nombreux mois de développement, la première beta de la future version 2 de Doctrine, le célèbre ORM pour PHP, vient de sortir. Beaucoup de changements au programme dont le changement conceptuel fondamental opéré en passant du design pattern Active Record à Data Mapper. Cela aura pour conséquence de casser la compatibilité avec la version précédente mais offrira en contrepartie un bien meilleur découplage des modèles.

Compilation détaillée de PHP sous Linux

Julien Pauli détaille dans un long article comment compiler PHP sous Ubuntu Server. Il liste également les extensions intéressantes pour compléter les fonctionnalités proposées en standard.

Advanced Regular Expression Tips and Techniques

Le site Nettuts+, spécialisé comme son nom l'indique dans la rédaction de tutoriels, propose cette semaine une initiation aux techniques avancées des expressions rationnelles, souvent improprement appelées "expressions régulières". On y trouve notamment comment insérer des commentaires dans des motifs complexes, utiliser des assertions et des conditions ou encore comment nommer un masque.

Python basics for PHP developers

Comme il n'y a pas que PHP dans la vie, cette semaine l'article bonus propose une initiation au langage Python pour les développeurs PHP.

20avr/100

Revue de presse PHP de la semaine 15 (2010)

Voici la revue de presse de la semaine qui vient de s'écouler.

Java versus PHP

Giorgio Sironi compare sur son blog Java et PHP. L'article ne fait qu'égratigner la surface mais il a le mérite d'exposer dans les grandes lignes les ressemblances et les différences de manière relativement objective.

Preparing for the Zend Framework Certification Exam

Le site php|architect a publié un retour d'expérience sur la préparation à la certification Zend Framework. Les ressources intéressantes pour se préparer y sont listées ainsi que l'élément clé pour bien aborder cet examen : la version actuelle de la certification porte sur la version 1.5 du Framework. Cela signifie que des composants importants des versions actuelles comme Zend_Application ne sont pas couverts car n'existaient pas à l'époque.

Migrating a dev team to an OO team

Bien que cela soit de moins en moins vrai, PHP traîne encore une réputation de langage principalement procédural avec un modèle objet pauvre. La faute revient aujourd'hui plus aux développeurs qu'au langage lui-même. Il est donc important de changer les mentalité et de mettre à jour les compétences de son équipe.

Le blog de la société Ibuildings liste 10 étapes pour amener en douceur une équipe habituée à la programmation procédurale à changer son mode de fonctionnement.

XPath regular expression matching in PHP 5.3

En attendant que la version 2.0 de XPath soit disponible dans PHP, il est parfois difficile de faire des requêtes complexes. Heureusement, depuis PHP 5.3 il est possible d'enregistrer des fonctions PHP pour les utiliser dans les requêtes XPath.

Remote collaboration and teams

Enfin, l'article bonus de la semaine traite des difficultés liées au télé-travail. L'absence de ses collègues entraîne une perte des contacts informels, voire inconscients, qui soudent une équipe. Il donne des pistes pour tenter de créer du lien malgré la distance et l'usage d'outils de communication modernes comme la messagerie instantanée.

8avr/100

Revue de presse PHP de la semaine 14 (2010)

Après une (trop) longue interruption, je reprends ma revue de presse hebdomadaire du monde PHP mais cette fois sur ce blog et non plus sur mon blog personnel.

Le but est de vous proposer une sélection d'articles traitant de PHP au sens large, c'est à dire incluant éventuellement les technologies associées. Ces articles seront principalement tirés de la partie "Lecture" située dans la barre de droite de ce blog mais au lieu de simplement donner un lien, je résumerai le contenu de l'article afin d'expliquer ce que je trouve intéressant dedans. Le nombre d'articles proposés variera en fonction de l'actualité.

Comme toute sélection celle-ci sera nécessairement subjective mais je m'efforcerai de piocher dans ma veille personnelle des articles pertinents pour le plus grand nombre.

Enfin, lorsque l'occasion s'en présentera, j'essaierai d'ajouter un article qui ne sera pas directement lié au monde PHP mais qui mérite d'être lu.

Trêve de bavardage, passons à la revue de presse de la semaine.

Mort de PHP6 + 20 jours

L'actualité récente de PHP a été assez tumultueuse concernant les futures versions. Certains développeurs considèrent que la marche actuelle vers PHP 6 n'est pas la bonne et qu'il faut changer de méthode afin de sortir de l'enlisement actuel.

A la suite de son premier bilan, Frédéric Hardy propose un résumé circonstancié 20 jours après le début de ces discussions animées sur l'avenir de PHP et les actions menées depuis lors.

A Primer for PHP 5.3's New Language Features

Au cours du travail préliminaire sur la version 2.0 de Zend Framework, Matthew Weier O'Phinney et son équipe se sont penchés sur les nouvelles fonctionnalités de PHP 5.3. Leurs découvertes montrent des cas d'usage des namespaces, des closures et la méthode magique __invoke().

Cet article pointe également les limites de ces nouvelles fonctionnalités et certains aspects contre-intuitifs lorsqu'on les découvre.

Don't reinvent the wheel ... invent the car !

Sous ce titre anglophone se cache un très bon article d'olivier Hoareau qui gratte là où ça fait mal. Il s'attache à démonter les discours faciles sur la mise en place de bonnes pratiques de développement, en particulier sur l'usage d'un framework.

On rencontre souvent des discours creux ponctués de mots-clés mais en poussant un peu plus loin la discussion, on découvre généralement que les bonnes pratiques affichées cachent un manque de maîtrise des outils et des méthodologies voire de PHP lui-même.

Introducing phpfarm

Tester son code avec différentes versions de PHP est souvent compliqué. Pour la librairie PEAR et ses très nombreux paquets c'est un réel problème. Heureusement, une solution simple à mettre en œuvre est désormais disponible grâce à phpfarm.

Cet outil permet d'installer simplement de nombreuses versions de PHP pour un usage en ligne de commande ce qui est suffisant pour lancer des tests unitaires. Il est également possible d'utiliser ces versions de PHP avec Apache via CGI. Les possibilités offertes sont énormes.

Neural Networks in PHP

Les réseaux neuronaux sont un concept récent qui vise à reproduire le fonctionnement du cerveau pour traiter des données. L'avantage de ce système c'est qu'il est adaptatif et peut apprendre de ses échecs. Une application neuronale sera donc théoriquement capable d'améliorer ses résultats avec le temps.

Le blog du site PHP Classes explique la théorie des réseaux neuronaux et propose un exemple d'implémentation avec le framework Neural Mesh.

How MySpace Tested Their Live Site with 1 Million Concurrent Users

MySpace n'est pas une société comme les autres. La preuve, pour tester la tenue à la charge de son site en vue de l'introduction d'une nouvelle fonctionnalité elle a mis en place 800 machines virtuelles Amazon EC2 afin de simuler 1 000 000 d'utilisateurs concurrents.

Vous n'aurez sans doute jamais besoin de tester une telle charge mais l'idée d'utiliser le Cloud pour simuler rapidement un afflux massif de visiteurs est intéressante.

6avr/102

Statistiques d’usage de PHP sur Debian

La distribution Debian recueille des statistiques d'usage des différents paquets qui la composent et publie les résultats dans le cadre de l'initiative Debian Popularity Contest.

Un mot sur la méthodologie

Comme toujours avec ce genre d'études, la première chose à regarder est la méthodologie. Les statistiques sont recueillies à l'aide du paquet popularity-contest qui n'est pas installé par défaut. Seuls les serveurs l'ayant installé sont donc pris en compte ce qui représente tout de même un peu plus de 90 000 serveurs à ce jour.

Plusieurs informations sont disponibles pour chaque paquet dont celles concernant leur installation, leur mise à jour récente et leur usage, appelé "vote". L'outil considère qu'un serveur "vote" pour un paquet si un programme du paquet ou d'un paquet dépendant a été lancé au cours des 30 jours précédents la mesure. Les données anonymisées sont envoyées à Debian chaque semaine.

Il faut bien entendu garder en tête que ces statistiques ne comprennent pas les installations faites à partir des sources ou à l'aide de piles LAMP packagées comme Zend Server ou Xampp. Ces chiffres sont donc en dessous du nombre d'installations réelles de PHP.

PHP 5 a clairement supplanté PHP 4

La comparaison des statistiques de PHP 5 avec celles concernant PHP 4 est intéressante. On peut remarquer que le paquet php4-common est installé sur 6,37% des machines et utilisé sur à peine 2,06% d'entre elles contre respectivement 45,44% et 34,44% pour son équivalent PHP 5. Cela montre clairement que PHP 5 a supplanté PHP 4, ce qui bon signe tant les avantages apportés par la dernière version majeure de PHP sont importants.

PHP 4 étant désormais de l'histoire ancienne, nous allons nous concentrer sur les statistiques de la version 5.

Le SAPI le plus utilisé est mod_apache

Un SAPI, ou Server API, est le moyen de mettre en œuvre PHP soit en ligne de commande (CLI) soit au travers d'un serveur HTTP (mod_apache, CGI, etc.). On peut constater que le module pour Apache est le SAPI le plus utilisé avec près de 30 % tandis que le mode CGI n'est utilisé que dans 5 % des cas.

A noter le taux d'usage de près de 18% de PHP en ligne de commande (php5-cli) ce qui est intéressant car ce mode pourtant très pratique est très souvent ignoré ou négligé.

PaquetInstalléUtiliséMis à jour
libapache2-mod-php539,66%29,12%11,02%
php5-cli24,86%17,92%11,27%
php5-cgi8,05%5,34%3,54%
libapache2-mod-php5filter0,09%0,08%0,03%

MySQL domine largement les autres connecteurs

Sans surprise, l'extension mysql domine largement les autres connecteurs de base de données avec un taux d'usage presque trois fois supérieur à celui des autres connecteurs réunis. A noter, le très faible usage d'ODBC tandis que Sqlite obtient un succès plutôt mitigé.

PaquetInstalléUtiliséMis à jour
php5-mysql29,55%20,98%7,95%
php5-pgsql5,19%3,54%1,87%
php5-sqlite3,69%2,59%1,57%
php5-odbc1,47%0,89%0,54%
php5-sybase0,98%0,60%0,37%
php5-interbase0,39%0,25%0,12%

PEAR est peu utilisé

Avec un taux d'usage de 3,41%, PEAR déçoit. S'il est en perte de vitesse constante depuis plusieurs années, certains de ses paquets restent pertinents comme PHP_CodeSniffer qui permet de s'assurer de l'application de règles de codage. Par ailleurs, de nombreux outils de qualité comme PHPUnit, Phing ou encore les eZ Components sont distribués par des canaux PEAR alternatifs  mais qui nécessitent l'usage du client officiel.

Les extensions PECL semblent peu utilisées

L'une des particularités de PHP est son découpage en extensions, chacune étant dédiée à une tâche précise. Il est donc aisé de compléter la panoplie de base avec les nombreuses extensions disponibles notamment au travers de PECL, le pendant de PEAR pour les extensions écrites en C.

Le taux d'installation très faible du paquet php5-dev, qui est nécessaire pour compiler ces extensions, montre leur faible utilisation.

Qu'en conclure ?

Il est difficile de tirer des conclusions de ces statistiques car elles ne sont pas représentatives de l'usage global de PHP. Cependant, elles confirment globalement ce que nous constatons au quotidien, à savoir qu'Apache et MySQL sont les outils les plus souvent associés à PHP.

Enfin, elles rappellent que si certains tirent pleinement parti des possibilités de PHP en utilisant PEAR et les extensions PECL, la majorité des utilisateurs se contentent d'un usage plus simple de 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.

4mar/100

Conférence sur l’industrialisation PHP à la 3e édition de Be Zend

Logo Be ZendJ'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.

5fév/100

Conférence à Solutions Linux 2010

Salon Solutions Linux

Le 16 mars prochain, j'aurai le plaisir de donner une conférence lors du salon Solutions Linux 2010 sur le thème "Maîtrise du dévelopement PHP".

J'y parlerai des stratégies à adopter, des outils à mettre en place ainsi que de l'organisation des équipes quand PHP est amené à être un socle technique pour des applications critiques.

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 ?