Sortie de Laravel 5

 

Ca faisant longtemps qu’on l’attendait et ça y est enfin: le Laravel nouveau est arrivé! Et c’est une cuvée très spéciale.

La nouvelle version du Framework de Taylor Otwell (L5 pour les intimes) est officiellement devenue la branche stable du projet Laravel. Voici venir le successeur de la version 4, petite bombe dans l’écosystème du développeur PHP moderne.

Autant vous le dire tout de suite, si vous étiez habitué à Laravel 4 et que vous n’avez pas encore essayé la version 5 (par exemple, si vous avez vécu dans une grotte les 4 derniers mois), vous allez être surpris. Les changements ne sont pas aussi spectaculaires que lors du passage de la version 3 à la version 4, mais il y a malgré tout quelques de nouveaux concepts à intégrer. Et ce, pour notre plus grande joie. C’est que notre gourou a pensé à beaucoup de choses pour améliorer plus encore la qualité de son Framework. Car même si la quantité de développeurs travaillant avec Laravel et de contributeurs a augmentée de manière impressionnante depuis l’année dernière, ça reste son créateur qui tranche pour toutes les décisions plus ou moins importantes et qui donne le ton sur la façon d’évoluer de son bébé. Ce qui est bien légitime !

 

 

Quelques nouveautés

Au rayon des nouvelles fonctionnalités, voici quelques-uns des concepts intégrés au coeur du fonctionnement de L5:

Authentification embarquée

Laravel bénéficie maintenant d’un système d’authentification pleinement fonctionnel dès l’installation. Ceci inclut la possibilité de s’enregistrer, de se connecter, la gestion du cookie d’authentification, la gestion du renouvellement de son mot de passe (via email). Vous n’avez plus à vous soucier d’implémenter tout ça vous-même. Rien ne vous empêche non plus d’aller plus loin dans votre système d’authentification mais les fondations sont bel et bien là!

 

Les Middlewares

Ils viennent remplacer les filtres présents dans la version 4 de Laravel.

Les middlewares permettent de filtrer les requêtes parvenant à votre application en vérifiant certaines conditions sont remplies. Il s’agit en fait de décorateurs qui peuvent accompagner le cycle requête-réponse de votre application.

L’exemple le plus simple est celui d’un middleware qui vérifie qu’un utilisateur est bien connecté avant de le laissé accéder à une URL nécessitant une authentification. Si l’utilisateur n’est pas connecté, il est redirigé vers la page de login.

Autre exemple, celui du Middleware VerifiyCsrfToken, qui permet de vérifier systématiquement l’attribut “_token” de chaque formulaire soumis sur votre application. Il n’y a maintenant plus aucune excuse pour retrouver ce genre de faille dans vos applications Laravel ! Au passage, si vous avez une application sous L4 et que ce dont je vous parle vous semble sortir de nulle part, j’ai posté en son temps un petit tutoriel sur la façon de protéger Laravel 4 contre le CSRF et vous conseille vivement de lire.

Les middlewares permettent également d’ajouter des informations aux réponses renvoyées par votre application.

 

Les HTTP Requests

La simplicité du processus de validation a été poussée un peu plus loin encore dans cette version du Framework. En effet, tout les outils étant déjà là avant L5, mais chaque développeur pouvait se poser la question de la meilleure manière pour gérer cette validation. On retrouve maintenant un dossier “app/Http/Requests” dans lequel on va pouvoir aller ajouter les classes gérant cette validation.

Dans sa forme la plus concise, voici à quoi pourrait ressembler un processus de validation:

Et dans le controlleur ProfilesController:

Si les conditions fixées dans la méthode rules() de la classe UpdateProfileRequest ne sont pas remplies, la méthode update du contrôleur ne sera pas appelée et l’utilisateur sera redirigé sur la page d’avant (avec les erreurs de validations accessibles en variables). Tout ceci est géré automatiquement par Laravel!

On verra le tout de manière plus approfondie dans un prochain tutoriel.

 

L’injection en méthode (Method Injection)

L’injection de dépendances était déjà embarquée pour les constructeurs de vos classes avec l’excellent IoC Container de Laravel 4. Désormais, les méthodes de vos classes peuvent bénéficier également de la jugeote du Framework pour générer automatiquement les instances d’objects que vous devez intégrer à ces mêmes méthodes. Un exemple concret:

C’est très pratique de pouvoir injecter ses dépendances directement dans la méthode concernée. Surtout lorsqu’une classe externe n’est nécessitée que par une seule méthode du contrôleur.

 

Elixir

Elixir est une contribution du très prolixe Jeffrey Way, contributeur et pédagogue de grande renommée dans la communauté Laravel. Si vous ne le connaissez pas encore et que l’anglais ne vous fait pas peur, je vous invite à aller consulter son site. C’est une mine d’or en termes de ressources pour le développeur PHP moderne!

Mais revenons-en à nos moutons :)

Elixir permet de faciliter encore le processus de gestion des assets. Ses caractéristiques sont les suivantes: gestion plus aisée du fichier gulp.json, possibilité de versionner les builds css automatiquement, possibilité d’automatiser le lancement des tests et bien d’autre choses pratiques décrites sur laracasts et sur la documentation officielle.

 

Commands et Events

Ils ont été regroupés dans cet article car ils ont un fonctionnement similaire. Bien que leur raison d’être ne soient pas les mêmes.

Les Commands permettent d’encapsuler la logique d’une fonctionnalité dans une classe générale. Celle-ci fait appel à d’autres classes pour remplir l’objectif fixé. Par exemple, on pourrait avoir une commande UpdateUserProfile qui serait responsable de la mise à jour d’un profil.

Les Events, déjà présents nativement dans la version précédente du framework, permettent de lancer certaines actions lorsqu’un événement a eu lieu. Imaginons par exemple le cas d’une application Laravel faisant appel à un service externe pour compresser/convertir des vidéos. Une fois la conversion terminé, le service externe pourra faire une requête de type POST à notre application sur une URL bien particulière. Lorsque cette URL (ou route) est atteinte par le service externe, nous pourrions lancer un Event avec une commande de type:

Il n’y aura plus qu’à appliquer une ou plusieurs actions en fonction de l’input que nous aura donné le service externe (conversion réussie, ratée, fichiers de sorties …).

Ces instructions peuvent très simplement être mises en file d’attente via le système de Queue de Laravel pour un traitement ultérieur.

 

Et beaucoup d’autres choses …

C’est difficile de lister toutes les nouveautés présentes dans Laravel 5, tant elles sont nombreuses. On évoquera encore ici la configuration des environnements simplifiée, une nouvelle structure de fichiers, le namespacing généralisé, les nouveaux générateurs artisan. La liste est longue. Je vous invite à jeter un oeil aux Release Notes si vous voulez plus de détails.

 

 

Conclusion

 

On y est! Ca faisait longtemps que je n’avais plus écrit quoi que ce soit sur ce blog et j’avais oublié le soulagement que pouvait représenter l’arrivée à une conclusion. Je vous livre la mienne (qui vaut ce qu’elle vaut).

 

J’espère que ce petit tour d’horizon à l’occasion de la sortie de Laravel 5 vous aura donné d’aller plus loin avec ce dernier, qui sur bien des aspects continue de monter en puissance. Le tout en aidant la communauté des développeurs PHP à repousser ses limites et à redorer son blason. En ce qui me concerne, Laravel a été la porte ouvertes à toutes les fenêtres :) Et ce n’est certainement pas terminé!

Je vous invite à nous livrer votre sentiment sur cette version, pour nous dire ce que vous pensez de cette mouture version 2015. A très vite et d’ici là: Codez bien!

 

Laisser un commentaire

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