Students Save 30%! Learn & create with unlimited courses & creative assets Students Save 30%! Save Now
Advertisement
  1. Code
  2. PHP
Code

Pourquoi Laravel prend la communauté PHP par la tempête

by
Difficulty:IntermediateLength:LongLanguages:

French (Français) translation by honeymmmm (you can also view the original English article)

Je dois admettre que, à un moment donné, je me sentais un peu mal par rapport au langage PHP. Un certain nombre d'articles poignants sur la haine de PHP entouraient le Web comme un virus et certains de ses frameworks phares, tels que CodeIgniter, devenaient rapidement obsolètes. Pendant ce temps, Ruby on Rails semblait être en tête du peloton en termes d’innovation et de facilité de développement. À mesure que le temps passait, je me retrouvais de plus en plus à chercher ma ceinture à outils Ruby.

Mais un jour, j’ai découvert un nouveau cadre élégant, appelé Laravel. Au début, je l'ai écarté comme un autre clone de Sinatra qui diminuerait rapidement en néant, car le développeur principal l'a abandonné. Néanmoins, semaine après semaine, mes flux sur les réseaux sociaux étaient très chargés, louant la lisibilité de Laravel. "Se pourrait-il, pensais-je, que PHP dispose enfin d'un framework vraiment moderne?"

En savoir plus sur Laravel à http://laravel.com

Je n'étais plus disposé à rester à l'écart; il était temps de creuser. Un an plus tard, je suis l'un de ses plus grands évangélistes. Laravel rend PHP amusant à nouveau! Mieux encore, je ne crois plus que PHP soit condamné à jamais à la plupart des sites personnels et des blogs WordPress. Nan; En fait, cet auteur est convaincu que, grâce à Laravel, Composer et PHP 5.5, nous sommes sur le point de vivre la prochaine renaissance du langage serveur le plus populaire du Web.

Pour installer la dernière version de développement de Laravel (v4), vous devez d'abord installer Composer. Ensuite, il suffit de cloner le référentiel et d’installer les dépendances. git clone git://github.com/illuminate/app.git myApp et composeur installer. Vous êtes prêt à partir!


Eloquent

La plupart des développeurs PHP commencent leur voyage en imbriquant d'innombrables lignes de SQL directement dans leur PHP glacé et illisible. Inutile de dire que l'exclusion des sites Web les plus élémentaires conduit rapidement à un gâchis incontrôlable.

Vous vous souvenez de la première fois que vous avez entendu parler d'ActiveRecord de Ruby on Rails? Eh bien, au niveau du monde PHP, Eloquent est sa première implémentation.

Besoin d'exemples?

Les gens, il n'est pas possible d'écrire plus de code lisible en PHP! Ce serait une chose si Eloquent ne vous permettait d'effectuer que des opérations CRUD de base sur une table, mais ce n'est pas le cas.

Examinez les relations entre les tables, telles qu'un utilisateur et ses tâches respectives. Dans Laravel, après avoir défini une méthode de recherche rapide pour chaque modèle, nous pouvons facilement gérer une relation un à un ou toute association de ce type. Voici quelques exemples pour vous mettre en appétit.

Il n’est pas exagéré de considérer Eloquent comme la meilleure implémentation d’ActiveRecord en langage PHP.


Forfait Compositeur

À partir de Laravel 4 (actuellement en Alpha), l’ensemble de la structure sera modulaire et disponible sous forme de packages Composer individuels.

Composer est un système de packaging pour PHP similaire à PEAR, mais meilleur. Cela facilite au maximum le processus de gestion des dépendances.

Pensez à l'écosystème du cadre existant. Pour le moment, vous êtes obligé de vivre avec le jeu de fonctionnalités de base de chaque framework. Vous ne pouvez pas choisir, par exemple, d’utiliser Eloquent dans une application CakePHP. Comme vous pouvez l'imaginer, cette vérité a conduit à un processus insensé de réinventer la roue encore et encore ... et encore.

Mesdames et Messieurs, l'avenir de PHP est modulaire. Pourquoi installer un framework massif et gonflé, alors que vous n’avez besoin que de quelques-unes de ses offres? Eh bien, bientôt, vous n'aurez plus à le faire. Vous n'avez besoin que d'Eloquent dans un projet simple? Bien - pas un problème du tout! Installez-le simplement via Composer et passez à autre chose!

Donc, si nous passons à un monde PHP modulaire davantage basé sur des paquets, comment Laravel s’intègre-t-il? Eh bien, pensez-y comme une collection prédéterminée de paquets, enveloppés dans un arc! Mieux encore, si vous devez mettre à jour la dernière version du framework, il vous suffit de lancer composer upupate.

A titre d'exemple de la flexibilité que cela procure, ajoutons la bibliothèque de tests Mockery, très répandue, à une application Laravel. Commencez avec un nouveau projet Laravel 4 et éditez son fichier composer.json pour requérir Mockery.

Reportez-vous à Packagist.org pour obtenir une liste des packages Composer disponibles, ainsi que les instructions d'installation.

Maintenant que nous avons informé Composer que notre application nécessite Mockery, nous pouvons installer les dépendances applicables.

Et c'est tout! Nous pouvons maintenant utiliser Mockery dans nos tests. C'est le pouvoir de Composer et Laravel 4 au travail! Nous avons des roues; arrêtons d'en créer de nouveaux! Des centaines de paquets sont disponibles via Packagist.org.

Des centaines de paquets sont disponibles via Packagist.org.


Itinéraires

La plupart des développeurs PHP débutants ne connaissent rien d'autre que le plus naturel des systèmes de routage. Créez une arborescence de répertoires correspondant à l'URI de votre choix, puis poursuivez. Par exemple, ajoutez un fichier index.php au répertoire suivant: blog/admin/, et vous pouvez maintenant y accéder en naviguant jusqu'à: localhost:8888/blog/admin/index.php. Facile! Eh bien, peut-être au début; mais vous constaterez probablement que vous avez besoin de plus de flexibilité et de contrôle sur l'itinéraire déclenché dans votre application.

Laravel adopte une approche de routage incroyablement simple et facile à utiliser. À titre d'exemple, écrivons l'itinéraire nécessaire pour afficher une vue du profil d'un utilisateur.

Désormais, lorsqu'un utilisateur demande example.com/users/1, la vue users/profile.php sera rendue.

Alternativement, nous pouvons utiliser des contrôleurs traditionnels pour gérer la logique.

Maintenant, Controllers/Users.php sera responsable du rendu de la vue, en particulier de la méthode show.


Authentification Facile

Presque toute application Web de substance nécessitera une forme d'authentification. Laravel fournit une interface simple mais facile à utiliser pour authentifier les utilisateurs.

Commencez par créer une table users avec les champs nécessaires pour username et password. N'oubliez pas: il s'agit d'un cas d'utilisation idéal pour une migration!

Laravel peut alors attempt de connecter un utilisateur - probablement sur la base des valeurs fournies par l'utilisateur à partir d'un formulaire.

Voici un exemple de base, sans l’aspect validation.

Notez que, dans les coulisses, Laravel hachera automatiquement le mot de passe fourni et le comparera à ce qui est stocké dans la table users.

En supposant que les informations d'identification de l'utilisateur correspondent, l'ID utilisateur sera stocké dans la session et l'utilisateur sera connecté. Lors des demandes suivantes, vous pouvez récupérer le nom d'utilisateur de l'utilisateur actuellement connecté avec:


Envoi Email

Admettez-le: l'envoi d'e-mails via votre application est toujours plus compliqué qu'il ne devrait l'être. Plus maintenant dans Laravel 4!

Construit sur le paquet SwiftMailer, vous trouverez maintenant un nouveau fichier config/mail.php dans votre application. C'est ici que vous pouvez spécifier les informations d'identification nécessaires à votre fournisseur de messagerie. Voici une version simplifiée de ce que vous trouverez:

Remplacez simplement les valeurs par celles de votre serveur de messagerie, en conséquence.

Ensuite, nous avons besoin d’une vue pour le courrier électronique. Créons-en un, appelé welcome.blade.php, qui sera utilisé lorsqu’un nouveau membre s’inscrira sur notre site de fans Justin Bieber.

Une fois que tout est en place, établissons l'exemple de route nécessaire et envoyons le courrier électronique.

Assez simple, hein? Nous saisissons le nouvel utilisateur de la table et envoyons un courrier électronique à l'adresse électronique associée à cet utilisateur. Grâce à la fonctionnalité SwiftMailer, effectuer des actions apparemment complexes, telles que joindre des fichiers, est un jeu d'enfant! Désormais, chaque nouveau membre reçoit une photo de Justin Bieber lors de son inscription. Parfait!


BFFs avec colonne vertébrale

"Backbone fournit une structure à votre code de spaghetti en désordre!"

Laravel 4 simplifie au maximum le processus de création d'API RESTful. La clé réside dans la manière dont, par défaut, JSON sera renvoyé par une route.

Imaginons que nous devions renvoyer une liste de tous les utilisateurs au format JSON. Eh bien, Chuck, nous pouvons accomplir cela en une seule ligne.

Si vous exécutez cette route, un peu de JSON sera affiché, tel que:

Vous vous demandez où est le champ password? Dans Laravel, dans le modèle associé à la table, nous pouvons spécifier, via une propriété $hidden, les champs à masquer de la sortie JSON.

Maintenant, avec une bibliothèque JavaScript, telle que Backbone, nous pouvons récupérer ces données facilement.

Qu'en est-il d'aller chercher un seul utilisateur à la place? Eh bien, nous devons d’abord configurer le bon itinéraire Laravel:

Comme nous l’avons appris, cela renverra le JSON de l’utilisateur demandé (moins le password). Ensuite, nous créons un modèle Backbone et récupérons les données.

Remarquez comment l'essentiel du travail se situe du côté du client? Notre code Laravel est aussi nu que possible.


Migrations

Si vous êtes exclusivement un développeur PHP, il est probable que vous n'avez pas encore expérimenté le plaisir des migrations, qui ont été popularisées par le framework Ruby on Rails.

Pensez aux migrations en tant que contrôle de version pour votre base de données. Que se passerait-il si, le lendemain de l'ajout de ce nouveau champ à votre tableau des tasks , vous réalisiez qu'il n'était finalement plus nécessaire? Eh bien, vous supprimeriez manuellement le champ, non? Mais qu'en est-il des autres développeurs de votre équipe? Leur code peut casser si vous ne leur dites pas!

Avec les migrations, cependant, nous ne faisons qu’annuler la migration précédente et nous continuons notre journée! Mieux encore, lorsque vous appliquez des modifications à votre serveur, une simple commande php artisan migrate met automatiquement à jour votre base de données de production. Associé au générateur de schéma de Laravel, le processus de gestion des bases de données est aussi simple que possible.

Créons une migration pour ajouter une nouvelle table users à notre base de données. A partir de la ligne de commande:

Dans l'extrait de code ci-dessus, nous spécifions le nom de la table, ainsi que l'indicateur --create, pour indiquer que nous créons une nouvelle table plutôt que d'en modifier une existante.

Cette commande créera un nouveau fichier de migration dans notre application. Nous pouvons ensuite utiliser la classe Schema de Laravel pour préparer le schéma de notre table.

Notez que cette classe propose deux méthodes: up et down, qui spécifient l'action que Laravel doit effectuer lors de l'exécution d'une migration, ainsi que sa restauration.

Dans ce cas, sous up(), nous créons une nouvelle table, tasks, et spécifions deux champs pour les champs id et title , respectivement. Lorsque vous annulez la migration, nous abandonnons simplement la table....

Exécutez la migration en revenant au terminal et en tapant:

C'est tout! Vous avez maintenant une nouvelle table de tasks avec deux champs! ... Euh oh, faut-il revenir en arrière? Simple:

Au revoir table tasks .


Blade

Le moteur de templates Blade de Laravel fournit une syntaxe propre pour les vues. Par exemple, avec PHP classique, pour filtrer une liste de personnes et faire écho à leurs noms respectifs dans un élément de la liste, nous pourrions écrire:

Cette syntaxe peut être appliquée à la plupart des structures de contrôle de PHP.

Ce n'est pas si grave, mais nous pouvons faire mieux. Toute vue Laravel contenant l'extension de fichier .blade.php sera analysée en conséquence. Par conséquent, l'extrait précédent peut être remplacé par:

Notez que les variables à répercuter sont placées dans {{ }}, comme dans un moteur de modélisation JavaScript, tel que Handlebars.

Blade peut également être utilisé pour des mises en page élégantes et des pages maîtres. Créons une vue principale de base pour illustrer cette fonctionnalité.

La ligne @yield est la clé. Ceci spécifie que toute vue enfant avec une section id de container doit y être imbriquée.

Créons ensuite une nouvelle vue.

Terminé! Pages maîtres faciles en PHP!


Contrôleurs ingénieux

Sans un peu d'aide, la création d'un service RESTful en PHP peut s'avérer quelque peu difficile. Eh bien, dans Laravel 4, cela ne pourrait être plus simple. Le cadre offre ce que nous appelons des ressources reposantes. Faisons le test.

Dans votre fichier de routes, spécifiez une nouvelle ressource.

Cette ligne de code indique que nous voulons créer une nouvelle ressource, de nouvelles tasks et placer le contrôleur TasksController en charge de la gestion de la logique de chaque route.

En suivant les principes de REST, cette ressource enregistrera automatiquement les itinéraires pour:

  • GET tasks (Afficher toutes les tâches)
  • GET tasks / {id} (Afficher une seule tâche)
  • GET tasks/create (Afficher le formulaire pour créer une nouvelle tâche)
  • POST tasks (Créer une nouvelle tâche)
  • GET task/{id}/edit (Éditer une seule tâche)
  • PUT tasks/{id} (tâche de mise à jour)
  • DELETE tasks/{id}(Supprimer la tâche)

Ensuite, créons ce TasksController, mais plutôt que de le faire manuellement, nous laisserons Artisan manipuler le passe-partout.

Cela va créer un nouveau contrôleur controllers/TasksController.php et le remplir avec un peu de passe-partout.

Chacune de ces méthodes sera déclenchée lorsque la route RESTful applicable est déclenchée. Ainsi, pour afficher un formulaire afin de créer une nouvelle task , nous chargeons la vue applicable dans la méthode create, qui sera déclenchée lorsque example.com/tasks/create est demandé. Ce formulaire doit POST to /tasks, auquel cas la méthode store sera déclenchée.

Ça ne pouvait pas être plus propre!

Reportez-vous à la page Vimeo de UserScape pour les derniers screencasts officiels de Laravel.


Base de données

Combien de fois vous êtes-vous trouvé "en train de" ensemencer manuellement une table de base de données avec des enregistrements fictifs, à des fins de test? Pour moi, eh bien, c'est un grand nombre! Laravel 4 nous permet de spécifier un fichier seed pour une table.

Pour l'essayer, créez un nouveau fichier portant le même nom que sa table respective dans le répertoire app/database/seeds de votre application. Ce fichier doit stocker un tableau de tableaux, chacun contenant les paires clé-valeur nécessaires. Voici un exemple:

Nous avons maintenant décrit trois nouvelles lignes pour la table de tasks dans notre base de données. Disons le semer.

Terminé!


Model Setters et Getters

Il y a probablement diverses actions que vous déclenchez souvent lorsque vous définissez ou obtenez un champ à partir d'une table de base de données. Par exemple, lorsqu'un utilisateur s'inscrit pour suivre les meilleures pratiques de sécurité, nous devrions toujours hacher son mot de passe. Plutôt que de faire le travail manuellement, mettons à jour le modèle User et spécifions que, lors de la définition d'un mot de passe, il doit d'abord être haché.

Facile! Désormais, nous ne devons jamais nous soucier de cette pièce du casse-tête lors de l'enregistrement d'un nouvel utilisateur. Naturellement, l'option inverse est également disponible, si vous devez traiter la valeur d'un champ avant de "l'obtenir".

Que se passe-t-il si nous devons embellir un horodatage ou un nom? Cela aussi peut être accompli à travers le modèle, si vous le souhaitez.

Cette nouvelle méthode fullName() sera désormais disponible pour notre instance utilisateur.


Communauté (conférence)

Peut-être plus important que tout, Laravel a, dans un laps de temps relativement court, formé une communauté évangélique florissante, composée des développeurs les plus influents de la communauté PHP.

Pourquoi est-ce important? Simple: avec l'évangélisation vient à la fois l'éducation et la contribution. Le plus gros obstacle à un nouveau cadre est de faire passer le mot et de montrer aux gens comment utiliser le truc! Heureusement, Laravel excelle dans la documentation et les tutoriels / screencasts sur le Web - y compris un cours complet dispensé par le vôtre!

Découvrez les tenants et les aboutissants de Laravel ici chez Tuts + Premium!

La vérité est que nous avons à peine effleuré la surface de ce qui est possible à Laravel. Nous n'avons pas encore couvert la gestion des erreurs de Laravel, l'intégration PHPUnit, le chargement rapide (avant et après la récupération des collections) et bien plus encore. Assurez-vous de vous référer à la documentation fantastique pour aller plus loin dans le cadre, et gardez l'œil ouvert pour la version officielle de la version 4!

La communauté populaire Nettuts + propose un certain nombre de tutoriels spécifiques à Laravel.

Si cet article a servi de moteur à votre nouvel amour pour PHP et Laravel, vous envisagerez peut-être d'assister à la première conférence annuelle Laracon (conférence), prévue pour la fin février 2013 à Washington DC. !

La toute première conférence de Laravel, Laracon, se tiendra à Washington DC les 22 et 23 février 2013. Pour en savoir plus, visitez le site http://conference.laravel.com.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.