Javascript et Git pour les développeurs PHP – Felix Geisendörfer
Suite à la première conférence de la matinée et au lot de questions soulevées, une présentation plus interactive a été effectuée par Felix Geisendörfer de Debuggable. Le but initial était de présenter leur manière d’organiser les scripts Javascript au sein d’une application CakePHP, ainsi que les bases de jQuery mais la seconde partie a finalement été remplacée (à la demande de la majorité) par quelques illustrations de l’utilisation de Git pour versionner ses projets. Comme vous pouvez le remarquer le passage sous Git du projet et l’utilisation de ce SCM a suscité de nombreuses questions de la part d’utilisateurs de SVN !
Felix a donc commencé par nous présenter une manière d’organiser les fichiers Javascript afin de diminuer la quantité de code à télécharger par l’utilisateur sur chaque page, et pour également se retrouver plus facilement dans le code. L’architecture proposée est somme toute relativement simple. Il suffit en effet d’organiser ses fichiers au sein d’une arborescence identique à l’arborescence des vues de votre application. J’ai rapidement reproduit cette arborescence dans une application de test afin de faire une capture d’écran car une image vaut mieux que mille mots !
Cette organisation de fichier permet en effet de factoriser le code Javascript nécessaire à l’affichage de toutes les vues dans le fichier « layouts/default.js » et d’avoir ensuite un fichier Javascript par vue pour le code spécifique. De plus, si vous utilisez une fonctionnalité au sein de différentes pages cela vous forcera (pour éviter des redondances) à utiliser des éléments afin de factoriser votre code … ce qui est une bonne pratique !

Afin de se faciliter la vie avec l’inclusion des fichiers strictement nécessaires, Felix a également rendu disponible le script effectuant l’inclusion des bons fichiers au sein des applications de Debuggable. Le code ci-dessous doit être placé dans un élément « views/elements/js_include.ctp » et être appelé sur chacune des pages (dans le layout par exemple).
<?php // Source : http://bin.cakephp.org/view/709895328 $includeScripts = array( 'jquery', 'jquery.tooltip', ); $layoutScript = sprintf('%sviews/layouts/%s.js', JS, $this->layout); if (file_exists($layoutScript)) { $includeScripts[] = substr($layoutScript, strlen(JS)); } $action = (isset($viewElement)) ? $viewElement : $this->params['action']; $viewScript = sprintf('%sviews/%s/%s.js', JS, $this->params['controller'], $action); if (file_exists($viewScript)) { $includeScripts[] = substr($viewScript, strlen(JS)); } if ($this->params['pass'] && preg_match('/^\w+$/', $this->params['pass'][0])) { $viewScript = sprintf('%sviews/%s/%s.js', JS, $this->params['controller'], $action . '_' . $this->params['pass'][0]); if (file_exists($viewScript)) { $includeScripts[] = substr($viewScript, strlen(JS)); } } foreach ($includeScripts as $script) { echo $javascript->link($script); } ?>
La première partie de cette conférence s’est terminée avec quelques astuces génériques sur l’utilisation de Javascript et notamment un appel à ne pas vouloir faire de la programmation orientée objet en Javascript car le langage n’est pas fait pour ça !
La seconde partie concernant l’utilisation de Git (branches, merge, résolution de conflits, fast forwarding, repositories multiples …) était assez interactive et il est difficile de la retranscrire ici … voici une raison de plus pour participer à la prochaine édition du CakeFest
Pingback: CakePHP n’est pas mort !