La communauté PHP a récemment bénéficié d'une nouvelle version de l'un de ses frameworks les plus appréciés, Laravel. La version 5.0.1 est une version majeure. Par conséquent, non seulement de superbes nouvelles fonctionnalités sont disponibles, mais les fondements architecturaux du cadre ont également été modifiés dans une certaine mesure. Alors, sans plus tarder, je vais plonger dans le cadre et vous montrer toutes les bonnes choses que la dernière version a à offrir.
La structure des dossiers d'un projet Laravel a subi une refonte majeure. Laravel 5 implémente la norme de chargement automatique PSR-4, ce qui signifie que toutes vos classes sont complètement espacées. L'espace de noms par défaut pour votre application Web est app
, que vous pouvez changer en utilisant le app artisan php: nom
commander.
Vos modèles relèvent de l'espace de nom d'application par défaut et se trouvent dans le dossier de l'application. Les ressources, les vues et les fichiers de langue de votre application se trouvent dans le dossier des ressources. Les répertoires vendeur, public et bootstrap conservent leur place, comme dans les anciennes versions du framework, tandis que les répertoires config, stockage, base de données et tests ont été déplacés à la racine du projet..
Si vous jetez un coup d'œil dans le dossier de l'application, vous remarquerez de nombreuses classes, mais ne vous en préoccupez pas pour l'instant. Nous en parlerons tout au long de cet article..
La détection de l'environnement a été grandement améliorée. Au lieu de tous les répertoires de configuration imbriqués complexes, vous avez un .env
fichier à la racine de votre projet pour prendre en charge l'environnement d'application et toutes les variables d'environnement. Également php artisan bricoleur
La commande utilise maintenant le paquet Psysh au lieu de Boris.
La méthode d'injection a été grandement simplifiée. Jusqu'à la version 4.2, vous deviez demander au conteneur Inversion of Control (IoC) de fournir une instance de classe ou de la créer dans le constructeur de votre contrôleur pour la rendre accessible dans l'étendue de la classe. Désormais, vous pouvez déclarer l'instance de la classe avec indication du type dans la signature de la méthode du contrôleur et le conteneur IoC s'en occupera, même s'il existe plusieurs paramètres dans la signature de votre fonction de contrôleur..
Les contrats sont en réalité des classes d'interface déguisées. Les interfaces sont une méthode éprouvée pour éliminer la dépendance de classe et développer des composants logiciels faiblement couplés. Ils vous aident généralement à suivre la règle "dépendez des abstractions, pas des concrétions".
Laravel adhère à la même philosophie. La plupart des composants principaux utilisent ces contrats pour maintenir le cadre faiblement couplé. Vous pouvez également les utiliser dans le développement de votre paquet.
Par exemple, si votre paquet nécessite la mise en cache, au lieu d’utiliser une classe de cache concrète, vous pouvez implémenter le Illuminer \ Contrats \ Cache
l'interface et vous serez libre de brancher et de mettre en œuvre l'implémentation du cache sans changer une grande partie du code de votre paquet.
Vous pourriez vous demander comment Laravel s'y prend pour déterminer la mise en œuvre d'un contrat spécifique. Toute cette magie se passe à l'intérieur du Illuminate \ Foundation \ Application.php
fichier.
Artisan dispose d'une nouvelle fonctionnalité de mise en cache des itinéraires. La mise en cache des itinéraires accélère considérablement l'enregistrement de votre application, avec des avantages de performance clairement visibles. Toutefois, si votre application utilise un petit nombre de routes, vous ne verrez peut-être pas l’impact que la mise en mémoire cache des routes est censé avoir, ce qui signifie qu’elle est plus adaptée aux cas où votre application comporte un grand nombre de routes..
Les commandes php artisan route: cache
et php artisan route: clair
activer et désactiver la mise en cache de l'itinéraire, respectivement. Une fois la mise en cache des itinéraires activée, les modifications que vous apportez aux itinéraires de l'application ne prendront effet. La mise en cache des itinéraires serait généralement implémentée dans le cadre de votre processus de déploiement..
Un middleware peut être utilisé pour ajouter des couches supplémentaires à vos routes HTTP. Si vous voulez que le code s'exécute avant chaque route ou avant des routes spécifiques dans votre application, un tel morceau de code convient parfaitement à une classe de middleware..
Par exemple, supposons que vous souhaitiez bloquer une certaine plage d'adresses IP de votre application pour rendre votre application indisponible dans cette région. Dans ce cas, vous devrez vérifier l’IP du client avant chaque demande et autoriser / interdire leur entrée dans votre application. Ce sera beaucoup à faire dans les actions de votre contrôleur, vous utiliserez donc un middleware à la place. Générer une classe middleware à app / Http / Middleware / RegionMiddleware.php
en utilisant Fabrication artisanale php: middleware "RegionMiddleware"
.
Vous pouvez ensuite enregistrer votre middleware dans le répertoire app / Http / Kernel.php
fichier en l'ajoutant à la $ middleware
tableau. Vous pouvez également attacher un middleware à des routes spécifiques en l'ajoutant à la $ routeMiddleware
tableau puis en le passant dans les options de route.
L’authentification fait partie de presque toutes les applications Web que vous développez, et vous passez beaucoup de temps à écrire le passe-partout pour l’authentification. Ce n'est plus le cas avec Laravel 5. Les migrations de base de données, les modèles, les contrôleurs et les vues doivent simplement être configurés pour que tout fonctionne correctement. Laravel 5 dispose d'un service d'enregistrement, qui est un élément crucial de ce système prêt à l'emploi, prêt à utiliser.
L'ancien jour où vous déclariez vos événements d'application en tant que chaînes est révolu, car l'objet événement est maintenant disponible. Vous pouvez créer des objets d'événement à l'aide de artisanat php: événement
et des objets de gestionnaire d'événements à l'aide de php artisan handler: événement
. Toutes vos classes d'événement et de gestionnaire vont à l'intérieur du app / événements
et app / Handlers / Events
dossier respectivement.
Une fois que vous avez créé vos événements, vous pouvez les déclencher par Event :: fire (nouvel événement (params))
. Pour attacher des auditeurs à vos événements, vous devez modifier le $ écouter
tableau dans le app / Providers / EventServiceProvider.php
fichier.
Laravel 5 vous permet d'encapsuler votre logique métier complexe dans de simples objets de commande..
Par exemple, supposons que vous disposiez d'une boutique en ligne où les utilisateurs s'inscrivent et achètent des articles électroniques. Le processus d'inscription peut impliquer la vérification de l'adresse de messagerie et de la carte de crédit de l'utilisateur..
Il peut être tentant de vider tout ce code dans une action du contrôleur, mais il n’est pas judicieux d’avoir un code qui fonctionnera uniquement dans le contexte de la requête HTTP, difficile à tester à l’unité à cause des requêtes HTTP et alourdira les actions du contrôleur.
Faire cela en utilisant les commandes vous donnera plusieurs avantages. Tout d'abord, votre code autonome sera modulaire et facile à tester. Deuxièmement, comme Laravel vous permet de mettre les commandes en file d'attente, votre logique métier peut être exécutée de manière asynchrone en arrière-plan, ce qui est impossible avec les actions du contrôleur..
Une file d'attente prête à l'emploi est fournie par défaut avec la structure, vous n'avez donc pas besoin d'utiliser de packages tiers. Tout ce que vous avez à faire est de configurer la file d'attente et vous devriez être prêt à partir. Tous vos travaux en attente sont conservés dans le app / Commandes
dossier. Une fois que vous avez créé vos commandes en file d’attente, vous pouvez simplement les insérer dans la file d’attente à l’aide de Queue :: push (nouvelle commande ($ params))
.
La planification des tâches a également été beaucoup améliorée. Auparavant, vous deviez configurer un cron pour chaque commande de console, mais plus maintenant. Vous n’avez besoin que d’une seule entrée cron et vous pouvez planifier vos tâches dans l’application à l’aide de nombreux sucres de syntaxe..
Laravel 5 prend en charge de manière native plusieurs systèmes de fichiers utilisant le package tiers Flysystem. Votre application peut utiliser un stockage local ou en nuage au moyen d’une configuration simple. Vous n'aurez besoin que de travailler avec la façade du système de fichiers et les opérations de stockage sous-jacentes seront automatiquement prises en charge. Vous pouvez configurer vos options de stockage dans le config / filesystems.php
fichier. Si vous avez besoin d'accéder à toutes les options de stockage disponibles dans votre projet, vous pouvez contourner la façade du système de fichiers et travailler directement avec la façade du disque..
L'objet de requête vous aide à injecter une logique d'authentification / autorisation et de validation des données dans vos requêtes. Une fois que vous avez implémenté votre logique d’entreprise dans l’objet de requête, vous devez saisir conseil dans l’action du contrôleur, comme dans le cas de l’injection de méthode..
Décryptons ceci en utilisant un exemple de code. Exécuter php artisan fait: demande TutsPlusRequest
générer une classe de requête à app / Http / Requests / TutsPlusRequest.php
. En examinant le contenu de ce fichier, vous remarquerez que artisan a généré une méthode de règles et une méthode d’autorisation. Vous allez ajouter des règles de validation dans votre méthode de règles.
'required | email', 'password' => 'required | min: 8']; // dans votre fonction publique action de contrôleur postLogin (\ App \ Http \ Requests \ TutsPlusRequest $ request) // le code ici ne sera pas déclenché // si les règles de validation // dans la demande échouent?>
Vous voulez que l'email soit un email valide et le mot de passe d'au moins huit caractères. Les deux champs sont obligatoires. Si l'une de ces règles de validation échoue, l'action de votre contrôleur ne sera pas exécutée et l'utilisateur sera redirigé vers la page du formulaire..
Elixir est une API GulpJS pour Laravel qui vous aide à définir des tâches d'abaque pour vos applications. Plonger dans GulpJS n'entre pas dans le cadre de cet article, mais vous pouvez consulter son site officiel et consulter Elixir pour plus d'informations..
Un cas d'utilisation typique de GulpJS est de minifier / concaténer vos fichiers CSS / JS. Vos paquets gulp résident dans le package.json
fichier à la racine de votre projet, alors que les tâches à exécuter sont spécifiées dans le gulpfile.js
fichier. Pour ceux d'entre vous qui connaissent déjà le flux de travail GulpJS, cela serait plus logique, car Elixir vous aide uniquement à intégrer GulpJS dans vos applications Laravel..
Socialite est un package de première partie qui simplifie l'intégration de l'authentification par une tierce partie dans vos applications Web. Comme il n’est pas inclus par défaut, vous devez l’utiliser à l’aide de composer. Une fois que cela est fait, vous devez configurer les fournisseurs que vous souhaitez utiliser dans votre application. Actuellement, Socialite supporte Twitter, GitHub, Google et Facebook..
J'espère que vous avez apprécié l'examen des spécificités de Laravel 5. D'un point de vue architectural, le cadre a fait des pas de géant, ce qui contribuera grandement à organiser votre code d'application Web et à vous libérer du cauchemar de la maintenance..
.