Laravel: expliquer les concepts de base. Première partie: théorie

Amis, nous avons d'excellentes nouvelles. En août, nous, à OTUS, avons lancé un nouveau cours - «Framework Laravel» , mais il y avait tellement de gens qui voulaient étudier que tout le monde n'a pas réussi à entrer dans le groupe. Un nouveau stream démarre fin octobre! Nous attendons tout le monde et traditionnellement, à la veille du début du cours, nous partageons du matériel utile.



Dans cet article, nous nous familiariserons avec les fondements théoriques de Laravel - avec le cadre lui-même, avec son histoire, et avec les concepts de base et les concepts qui y sont utilisés. Cet article est destiné aux débutants qui ont déjà maîtrisé les bases de PHP, ont essayé d'écrire leur premier site, par exemple, avec un petit système CMS, mais n'ont pas encore essayé de travailler avec des frameworks PHP, et n'ont pas compris les principaux avantages qu'ils offrent.
Ainsi, Laravel est un framework web relativement nouveau (la première version a eu lieu en 2011). Laravel a tiré le meilleur parti d'un autre framework backend, tel que Rails, mais maintenant Laravel l'a déjà dépassé en termes de popularité. Au moment d'écrire ces lignes, la dernière version est 6.



Pas un cadre, mais tout un écosystème


Qu'est-ce que cela signifie? Si vous n'aviez été impliqué que dans le développement Frontend auparavant, je comparerais Laravel à Angular: littéralement à partir d'une ligne qui génère un nouveau projet pour vous, vous obtenez presque tout dans la boîte (bien sûr, sans la partie frontale du projet, mais 2-3 équipes de plus et il se révélera être en place). En ce qui concerne le développement PHP lui-même, Laravel a presque tout en place pour créer une application backend fiable: PHPUnit est un cadre pour les tests, Artisan est une interface de ligne de commande pour la migration de la base de données, la création de modèles et le reste de la configuration applications, un serveur Homestead intégré, dans lequel vous pouvez créer un environnement virtuel, ainsi que travailler avec le routage, le middleware de traitement, ainsi qu'une vue de liaison confortable avec les modèles Blade.

Nous allons essayer d'analyser tous les concepts complexes dans l'ordre. Je vous rappelle: cet article n'est qu'une introduction théorique pour les débutants. Des exemples pratiques figureront dans les parties suivantes .

Homestead

La philosophie de Laravel est de vous donner le maximum d'outils pratiques prêts à l'emploi, et il est particulièrement pratique, fiable et facile à utiliser. C'est pourquoi Homestead est l'un des premiers à être mentionné dans la documentation.

Laravel Homestead est une boîte pré-installée Vagrant. Qu'est ce que c'est Le lecteur a probablement utilisé les assemblages de XAMPP, Abyss Web Server, ou téléchargé toutes les pièces nécessaires au fonctionnement du serveur (Apache, PHP, PHPMyAdmin, MySQL, et bien plus) de manière indépendante. Vous pouvez trouver la liste complète des installations installées dans Homestead ici . Pourquoi est-ce fait de cette façon? Homestead crée une sorte d '"environnement virtuel" qui s'exécute dans le même environnement que sur le serveur et avec les mêmes programmes. Homestead recrée rapidement et facilement ses boîtes «virtuelles», et vous n'aurez pas à vous inquiéter longtemps si vous cassez accidentellement quelque chose.

Mais Homestead Laravel ne s'arrête pas là. Si vous utilisez Mac OS, vous devez essayer le valet minimaliste, qui n'a pas autant de fonctions prêtes à l'emploi, mais qui est beaucoup plus facile à installer. Et aussi un grand nombre de packages supplémentaires - c'est tout un écosystème!



Migration de base de données


L'expression «migration de base de données» semble très effrayante pour un débutant. J'espère que le lecteur sait à quoi sert la base de données (en principe, évidemment, pour stocker des informations) et a même écrit dans sa vie quelque chose de plus que «SELECT * FROM Customers» dans les commandes SQL. Cela devrait suffire.

Ainsi, la migration est une sorte de système de contrôle pour transférer vos tables vers la base de connaissances à l'aide du constructeur de table. La migration vous permettra d'éviter les erreurs et les conflits lors de la construction des tables dans la base de données d'un grand projet avec les membres d'une autre équipe. De plus, cela vous permettra d'interagir avec la base de données sans utiliser d'outils tels que MySQL WorkBench ou PhpMyAdmin, mais directement à partir du code, selon les besoins de votre projet dans les tableaux de données. L'ajout et la suppression de tables sont enregistrés dans l'historique des migrations, et maintenant au moins les timlids auront un mal de tête en moins.





ORM


ORM est un système de cartographie relationnelle objet qui associe des bases de données à des concepts de programmation orientée objet.

Cela semble effrayant à première vue, mais cela est directement lié à la migration des bases de données: chaque classe a sa propre classe - un modèle qui n'est utilisé que pour travailler avec cette table. Cela permet de ne pas générer de travail inutile dans la base de données elle-même, mais d'interagir à nouveau directement avec lui à partir du projet. En conséquence, il s'avère à la fois plus pratique et plus fiable. Bien sûr, il faudra un certain temps pour maîtriser les commandes et les fonctionnalités de génération de modèle, mais il faudra beaucoup plus pour créer un grand projet avec un grand nombre de tables.

Lame - modèles: une vue pratique de la vue


Blabe - les modèles offrent la possibilité de lier facilement vos vues de la vue. Voici à quoi cela ressemblerait en PHP natif:

<?php include($_SERVER['DOCUMENT_ROOT']."/shop/includes/header.inc.php"); ?> <div class="catalog"> <div class="catalog-filters"> </div> <div class="catalog-products"> </div> <div class="catalog-pagination"> </div> </div> <?php include($_SERVER['DOCUMENT_ROOT']."/shop/includes/footer.inc.php"); ?> 

 <html> <head> </head> <body> @extends('header') @extends('catalog') @extends('footer') </body> </html> 

D'accord, ça a l'air beaucoup plus soigné! Bien sûr, en fait, il s'agit du code du contrôleur et de l'exportation à partir du reste des modèles Blade, mais sur un grand projet, cela ne sera que plus pratique.



Bon assistant Artisan


Artisan est une interface de ligne de commande livrée avec Laravel. Il vous permet de générer des modèles, des contrôleurs, de nouveaux tests, des notifications - directement depuis la ligne de commande. C'est beaucoup plus pratique que de copier un modèle de classe de quelque part ou même d'écrire avec des stylos de quelque part.

Test d'application


Si vous souhaitez développer vos projets via TDD / BDD (développement par test / développement par comportement), il y a PHPUnit dans le kit (des tests tels que Browser / Unit / Feature sont pris en charge), ainsi qu'un package pour générer du faux contenu Faker (utile, par exemple, lorsque vous testez la base de données, car vous n'avez pas à la remplir vous-même de contenu, que l'utilisateur y ajoute généralement).

Beaucoup de choses agréables


Voulez-vous que l'authentification via les réseaux sociaux apparaisse rapidement dans votre application? Pas de problème, Laravel Socialite se précipite à la rescousse. Vous souhaitez configurer la mise en cache? Aucun problème, dès la sortie de la boîte. Avez-vous de nombreux projets hébergés sur divers services VPS? Laravel Forge en place. Besoin de WebSockets, par exemple pour le chat? Pas de problème. Et cela peut donc durer très longtemps.

Pourquoi devrais-je enseigner ce Laravel?

Maintenant, Laravel, sans aucun doute, occupe la position du framework PHP le plus important. Maintenant, selon Github, les référentiels avec Laravel sont autour de 195k contre 35k pour Yii et 43k pour Symfony. Ce n'est peut-être pas la comparaison la plus honnête, mais pourquoi ne pas essayer Laravel alors?

Source: https://habr.com/ru/post/fr470794/


All Articles