décembre 2010 (12)

jeudi 30 décembre 2010

La naissance d'Atoum en vidéo

Il y a des amis qui ont un don pour trouver le cadeau de Noël qui fera plaisir.

Alexis est de ceux-là, puisqu'il a eu l'excellente idée de m'envoyer ce film, qu'il a générée à l'aide des modifications effectuées sur le dépôt d'Atoum, mon framework de tests unitaires spécifique à PHP 5.3, et qui montre visuellement l'évolution du projet depuis ses débuts jusqu'à aujourd'hui.

Mon ami, tu n'aurais pas pu trouver mieux !

Lire la suite

mercredi 29 décembre 2010

private, protected et public sont dans un bâteau...

Suite à mon billet sur l'intérêt des tests unitaires sur les méthodes privées ou protégées, j'ai eu beaucoup de commentaires au sujet de l'encapsulation et sur sa mise en œuvre.

Récemment, cousin @ub sans bermuda, l'un de mes collègues chez PMSIpilot,  a relancé le débat via un sondage, même si son objectif était plutôt de lancer un débat sur le thème la composition contre l'héritage.

J'ai donc décidé de prendre mon clavier pour à la fois essayer de répondre à ces interrogations et mettre à plat ma propre réflexion sur le sujet.

L'encapsulation, dans le cadre de la POO, consiste dans le fait de masquer à l'utilisateur d'une classe les détails de son implémentation.

En PHP, elle est mise en œuvre à l'aide des mots-clefs private, protected et public, qui sont applicables au choix sur les propriétés d'une classe ou ses méthodes.

Le mot-clef private permet donc très logiquement de masquer à l'utilisateur final les propriétés et les méthodes sur lesquelles il est appliqué, alors que public, à contrario, permet de rendre les éléments sur lesquels il est appliqué totalement accessibles.

Enfin, tout ce qui est protected a un statut particulier, dans le sens ou tout ce sur quoi il est appliqué se comporte comme étant privé pour l'utilisateur de la classe, et comme étant publique dans les classes dérivées.

Lors de la conception d'une classe, le développeur doit donc choisir entre ces différents niveaux de visibilité, et cela à bon escient, car un mauvais choix à ce niveau peut avoir des répercussions parfois très gênantes pour les utilisateurs.

Or, il n'y a aucune règle explicite gouvernant l'utilisation de ces mots-clefs, car elle dépend très étroitement du contexte.

Lire la suite

vendredi 24 décembre 2010

Mort de PHP6 + 280 jours

Et voici le dernier billet de l'année sur ce thème.

L'air de rien, dans trois mois, cela fera un an que je réalise cette chronique.

Cela me fait un peu bizarre, car je n'imaginais pas du tout aller aussi loin lorsque j'ai commencé.

Il faut dire que vous y êtes pour beaucoup, car vos encouragements, vos remerciements, vos félicitations, explicites via vos commentaires ou implicites via mes statistiques de fréquentation me donne une réelle motivation pour continuer l'aventure.

J'ai en effet l'impression de répondre à un réel besoin, et je pense que tant que cela sera le cas, je vais continuer.

L'aventure va donc se poursuivre en 2011 et cela même si ma chronique aura quelques jours de retard début janvier.

J'ai en effet un déménagement à gérer, puisque j'ai enfin trouvé un logement sur Lyon et ma famille va pouvoir me rejoindre.

Je n'aurais donc guère de temps à consacrer au suivi de l'actualité de PHP durant les premiers jours de la nouvelle année.

Cette parenthèse étant terminé, je vais maintenant vous parler des événements survenus au cours des dix derniers jours dans le développement du langage.

Lire la suite

jeudi 23 décembre 2010

Supprimer les accents d'une chaîne de caractères et la passer en lowerCamelCase en PHP

Dans le cadre de mon travail, je viens d'être confronté à une problématique intéressante, dans le sens où elle m'a fait utiliser une fonctionnalité de PHP 5.3 que je n'avais encore jamais eu l'occasion d'utiliser, à savoir intl.

J'ai été en effet obligé de trouver un code PHP permettant de transformer la chaîne de caractères Équipe médicale principale en equipeMedicalePrincipale.

Le problème peut sembler trivial, et pourtant, il n'est pas simple à régler.

Il est possible de le décomposer en quatre étapes :

  1. Passage en casse basse de la première lettre.
  2. Suppression des accents.
  3. Passage en casse haute de toutes les lettres précédées d'un espace.
  4. Suppression des espaces blancs.

Et si les étapes 1, 3 et 4 sont relativement simple, l'étape 2 est quand à elle beaucoup plus délicate à solutionner.

Lire la suite

Cadeau de noël pour les utilisateurs de VIM

J'ai souvent des commandes à exécuter lorsque je développe, comme par exemple : #php symfony phpunit:unit path/to/test/file.php Jusqu'à récemment, j'avais ajouté la ligne suivante à mon .vimrc pour ne pas avoir à sortir de VIM pour exécuter ce type de commande : nnoremap <F12> :!php symfony  […]

Lire la suite

lundi 20 décembre 2010

Interview avec Rasmus, Ilia et Derick

Lors du forum PHP 2010, j'ai eu l'occasion de discuter avec Rasmus Lerdorf, Ilia Alshanetsky et Derick Rethans.

Il est ressorti de ces discussions un article au sujet de PHP, de son avenir et de sa communauté, destiné à paraître dans Programmez!, mais qui n'a apparemment pas été retenu.

Je vous en propose donc ici une version légèrement remaniée, afin que le temps que j'ai passé à l'écrire durant le forum au lieu d'assister aux conférences qui m'intéressaient ne soit pas entièrement perdu.

Je précise que cet article a été écrit il y a plus d'un mois, au moment du forum, et que depuis, l'actualité du langage a beaucoup évoluée.

En conséquence, les informations qu'il contient ne sont plus d'actualité pour certaines, et je vous invite donc à lire les billets relatifs à l'évolution du développement afin de faire le tri.

Lire la suite

jeudi 16 décembre 2010

Rendez-vous AFUP du 15/12/2010

Hier soir, suite à l'invitation de Jean-Marc Fontaine, j'ai donné une conférence au sujet des traits, l'une des nouvelles fonctionnalités majeures de la prochaine version de PHP.

J'avoue que ma préparation pour cette présentation a été quelques peu chaotique, suite à un emploi du temps très chargé, et que j'appréhendais quelque peu l'exercice, d'autant que Stephan Marr, l'auteur de l'implémentation des traits dans le langage, me précédait.

C'est donc après sa présentation, axés sur l'aspect théorique et académique des traits ainsi que leur intégration au sein du Zend Engine, que je me suis lancé avec la présentation d'un cas pratique basé sur Atoum, le framework de tests unitaires que je développe.

Lire la suite

lundi 13 décembre 2010

Mort de PHP6 + 270 jours

Avec un peu de retard à cause d'un emploi du temps relativement chargé actuellement, voici ma chronique habituelle concernant le développement de PHP.

Après l'effervescence de la période précédente causée par le vent de révolution qui a soufllé dans le monde des développeurs du langage, les dix jours qui viennent de s'écouler ont été plus calmes.

Cependant, cela ne veut pas dire qu'ils ont été dénués d'intêrets.

En effet, si les modifications apportées au trunk sont quasiment exclusivement des corrections et des optimisations issues du travail effectué sur les branches 5.2 et 5.3, la liste de diffusion des contributeurs est restée active.

Une nouvelle RFC a été proposée, et les débats commencés durant les dix jours précédents ont continué.

De plus, de nouveaux débats ont commencé, et certains ont déclenché une vive discussion.

Lire la suite

vendredi 10 décembre 2010

PHP 5.3.4 est disponible !

Une nouvelle version de maintenance de la branche 5.3 du langage est disponible depuis ce matin. Il ne faut donc en attendre aucune nouveauté majeures, même si plus d'une centaine de bugs ont été résolus et qu'elle apporte quelques aménagements visant à améliorer le confort d'utilisation du langage.  […]

Lire la suite

mardi 7 décembre 2010

Complément à la documentation de Xdebug

Je <ironie>m'amuse</ironie> énormément avec PHPUnit actuellement, dans le cadre de mon travail.

Évidemment, j'ai rencontré quelques problèmes, mais rien de bien insurmontable, jusqu'à il y a quelques jour ou je me suis rendu compte que le rapport de couverture de code n'était plus généré.

Après quelques recherche, j'ai découvert que le problème provenait d'un appel à require('php://temp') dans le cadre d'une méthode de test.

Cependant, à partir de cette information, j'ai eu du mal à incriminer avec certitude PHPUnit, puisque ce dernier fait appel à un outil externe, à savoir Xdebug, pour collecter les informations relatives à la couverture de code.

Je me plonge donc actuellement dans les arcanes de PHPUnit et de Xdebug afin de découvrir le coupable, et du coup, je suis obligé de lire dans le détail leur documentation.

Or, celle de Xdebug est parfois incomplète sur certain point précis, comme, par exemple, la couverture de code (merci Murphy).

Lire la suite

lundi 6 décembre 2010

Et si on parlait des traits ?

Dans la lignée de mon billet sur le même sujet, et suite à une demande de l'AFUP, je donnerais le 15 décembre à partir de 19 h 30 une conférence sur les traits, en collaboration avec Stephan Marr, l'auteur de leur implémentation dans PHP. La conférence se déroulera à Paris à la Cantine dans le cadre  […]

Lire la suite

mercredi 1 décembre 2010

Mort de PHP6 + 260 jours

Le développement de PHP vit depuis la dernière rétrospective une période mouvementée.

En effet, il y a actuellement deux nouvelles versions du langage en préparation, et une troisième, qui correspond à la version de développement et devrait en théorie s'appeler PHP 5.4, est en cours de préparation.

De plus, il souffle sur la liste de diffusion des contributeurs, internals@, comme un léger vent de révolution.

En effet, si vous ne le saviez pas encore, en caricaturant quelque peu, il y a actuellement trois camps au sein de la communauté des contributeurs au langage, qui se livre quasiment quotidiennement un combat acharné pour parvenir à leurs fins.

L'un, que j'appellerai le camp traditionaliste, fait tout pour que le développement de PHP se poursuive de la même façon que depuis toujours, à savoir avec peu, voir aucun, formalisme, un pragmatisme forcené qui frise parfois le ridicule, une mauvaise fois récurrente et un nombrilisme relativement prononcé qui lui fait perdre de vue, voir même totalement ignorer, les désirs des utilisateurs.

L'autre, que j'appelais le camp progressiste, fait au contraire tout ce qu'il peut pour faire évoluer le développement du langage vers plus de formalisme tout en l'ouvrant plus largement vers les utilisateurs, en écoutant ce qui vient de l'extérieur en essayant d'en tirer le meilleur.

Et entre les deux, il y a les éternels indécis qui font parti de ce que j'appellerais le camp centriste et dont l'opinion varie au grès des courants et des pressions appliquées par l'un ou l'autre camp.

Et depuis quelques jours, le camp progressiste a lancé une grande offensive sur plusieurs points, en proposant plusieurs RFC qui vont pour la plupart à l'encontre des idées du camp traditionaliste.

En conséquence, si le trunk, qui contient la version en cours de développement de PHP, a évolué et que quelques modifications significatives ont été effectuées ces dix derniers jours, les choses les plus intéressantes se sont produites sur internals@.

Lire la suite