Nicolas Juen

Menu

WCEU : Better Site Stacks with Composer

Plus de 3 minutes 🙂

Cet article est la suite de ma retranscription des confĂ©rences du WordCamp Europe 2013. Cette fois encore elle fait partie des confĂ©rences LEARN, elle s’intitule Better Site Stacks with Composer et elle a Ă©tĂ© prĂ©sentĂ©e par Andrey Savchenko ou @Rarst.

Vous pouvez retrouver sa conférence sur WordPress TV.

Que nous dit notre orateur ?

Tout d’abord il nous explique ce qu’est un dependency manager ( ou gestionnaire de dĂ©pendances ). En gros c’est un moyen de dĂ©clarer que notre code dĂ©pend d’une libraire ou d’un autre code. Les dĂ©veloppeurs crĂ©ent du code, beaucoup de code mais ils ne savent pas, rĂ©ellement, si au moment de dĂ©ployer leur code il va fonctionner, justement a cause de ces dĂ©pendances.

Si chaque plugin commence par inclure sa propre librairie, dans sa propre version on va avoir des conflits. Une librairie incluse plusieurs fois dans PHP va déclencher une erreur fatale et le site sera planté.

Pour rĂ©pondre a ce genre de problĂ©matiques il y a le PHP5.3 avec le namespacing qui permet d’avoir moins de problèmes de collision de nom de classe.

Le standard PSR-0 permet de gĂ©nĂ©raliser le autoloading de classes,. Si jamais on appelle une classe qui n’existe pas, en dernier recours on peut mettre en place une fonction qui va tenter de charger la classe correspondante avant que le code ne plante complètement. Ce standard permet d’uniformiser l’arborescence des fichiers, mais je vous invite Ă  consulter le site.

Une solution ?

Pour l’orateur ces solutions ne sont pas complètes, ce n’est pas automatisĂ©, il faut gĂ©rer les dĂ©pendances soit mĂŞme, on en sait pas vraiment si les libraires ou plugins sont prĂ©sents, s’ils sont Ă  la bonne version etc.

La solution serait donc d’utiliser Composer. Composer va se nourrir de diffĂ©rentes sources pour tĂ©lĂ©charger ses dĂ©pendances :

  • TĂ©lĂ©chargement direct
  • SVN : un gestionnaire de versions
  • GIT : un gestionnaire de version aussi
  • Mercurial : encoreu n gestionnaire de versions
  • Pear (packages) etc.

Pour dĂ©clarer lĂ  oĂą l’on peut trouver les Ă©lĂ©ments Ă  tĂ©lĂ©charger, on dĂ©clare un fichier packages.json. Pour pouvoir trouver les sources, on peut aller sur https://packagist.org/ qui va nous donner des

Le fichier composer.json lui va dĂ©clarer ce que le projet Ă  besoin, c’est Ă  dire ses dĂ©pendances, la version de la dĂ©pendance etc. Ce qui est intĂ©ressant c’est que l’on peut dire que notre projet dĂ©pend d’une version d’un package mais surtout la possibilitĂ© de dire que l’on a besoin de n’importe quelle version du package dans la version 1.*. C’est un peu comme quand dans un plugin on dit qu’il a besoin d’au moins la version 3.0 de WordPress pour fonctionner.

Donc si un plugin demande la version 1.5 alors composer va prendre la version 1.5 comme on a spĂ©cifiĂ© que l’on a besoin de n’importe quelle version de la 1.x.

Et WordPress ?

Dans WordPress ce n’est pas actuellement en place cependant les challenges sont :

  • Amener ça au niveau du core WordPress
  • Avoir un accès au repository de WordPress et ainsi faciliter la mise en place des sites
  • GĂ©rer les assets de façon facile

N’oublions pas que composer n’est pas dĂ©diĂ© Ă  PHP, on peut l’appliquer aussi au CSS ou au javascript. C’est un peu comme ce que l’on peut rencontrer avec d’autres gestionnaires comme dans nodejs et npm (node package manager ) ou Bower. On dĂ©clare les dĂ©pendances et tout se tĂ©lĂ©charge dans des dossiers spĂ©cifiĂ©s.

Conclusion

Cette technique permet de solidifier nos sites, gĂ©rer automatiquement ce genre de choses rend les mises Ă  jour ou les installations plus simples et moins stressants. Est-ce que nous n’allons pas oublier un fichier ? La dĂ©pendance est-elle en place ? Le module ne manque-t-il pas ?

Il ne faut pas seulement appeler ses site des webapps mais il faut faire en sorte que se soit vraiment une webapp.

L’image de la fin :

wceu-composer

3 thoughts on “WCEU : Better Site Stacks with Composer

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.