Freunde, wir haben tolle Neuigkeiten. Im August haben wir bei OTUS einen neuen Kurs gestartet - „Framework Laravel“ , aber es gab so viele Leute, die studieren wollten, dass nicht jeder es geschafft hat, in die Gruppe zu kommen. Ein neuer Stream startet Ende Oktober! Wir warten auf alle und teilen traditionell am Vorabend des Kursbeginns nützliches Material.

In diesem Artikel lernen wir die theoretischen Grundlagen von Laravel kennen - das Framework selbst, seine Geschichte und die grundlegenden Konzepte und Konzepte, die darin verwendet werden. Dieser Artikel richtet sich an Anfänger, die bereits die Grundlagen von PHP beherrschen, versucht haben, ihre erste Website beispielsweise mit einem kleinen CMS-System zu schreiben, aber noch nicht versucht haben, mit PHP-Frameworks zu arbeiten, und die wichtigsten Vorteile, die sie bieten, nicht verstanden haben.
Laravel ist also ein relativ neues Webframework (die erste Veröffentlichung erfolgte 2011). Laravel hat das Beste aus einem anderen Backend-Framework wie Rails herausgeholt, aber jetzt hat Laravel es bereits an Popularität übertroffen. Zum Zeitpunkt dieses Schreibens ist die neueste Version 6.

Kein Rahmen, sondern ein ganzes Ökosystem
Was bedeutet das? Wenn Sie zuvor nur an der Frontend-Entwicklung beteiligt gewesen wären, würde ich Laravel mit Angular vergleichen: Im wahrsten Sinne des Wortes erhalten Sie aus einer Zeile, die ein neues Projekt für Sie generiert, fast alles in der Box (natürlich ohne den Front-End-Teil des Projekts, aber 2-3 weitere Teams, und es wird sich herausstellen, dass dies der Fall ist vor Ort). In Bezug auf die PHP-Entwicklung selbst verfügt Laravel über fast alles, was Sie zum Erstellen einer zuverlässigen Backend-Anwendung benötigen: PHPUnit ist ein Framework zum Testen, Artisan ist eine Befehlszeilenschnittstelle für die Datenbankmigration, Modellerstellung und andere Einstellungen Anwendungen, ein integrierter Homestead-Server, auf dem Sie eine virtuelle Umgebung erstellen, mit Routing arbeiten, Middleware verarbeiten und die Ansicht mit Blade-Vorlagen bequem verknüpfen können.
Wir werden versuchen, alle komplexen Konzepte der Reihe nach zu analysieren.
Ich erinnere Sie daran: Dieser Artikel ist nur eine theoretische Einführung für Anfänger. Praktische Beispiele finden Sie in den folgenden Abschnitten .
Gehöft
Die Philosophie von Laravel ist es, Ihnen die maximale Anzahl an praktischen Werkzeugen sofort zur Verfügung zu stellen. Sie sind einzigartig bequem, zuverlässig und einfach zu bedienen. Deshalb ist Homestead eines der ersten, das in der Dokumentation erwähnt wird.
Laravel Homestead ist eine vorinstallierte Vagrant - Box. Was ist das? Der Leser verwendete höchstwahrscheinlich die Assemblys von XAMPP, Abyss Web Server oder lud alle Teile herunter, die für das Funktionieren des Servers erforderlich sind (Apache, PHP, PHPMyAdmin, MySQL und vieles mehr), unabhängig voneinander. Die vollständige Liste der in Homestead installierten Geräte finden Sie
hier . Warum wird das so gemacht? Homestead erstellt eine Art "virtuelle Umgebung", die in derselben Umgebung wie auf dem Server und mit denselben Programmen ausgeführt wird. Homestead erstellt schnell und einfach seine "virtuellen" Boxen neu und Sie müssen sich keine langen Sorgen machen, wenn Sie versehentlich etwas kaputt machen.
Homestead Laravel endet jedoch nicht dort. Wenn Sie Mac OS verwenden, müssen Sie den minimalistischen Valet ausprobieren, der nicht so viele sofort einsatzbereite Funktionen bietet, aber viel einfacher zu installieren ist. Und auch eine Vielzahl zusätzlicher Pakete - das ist ein ganzes Ökosystem!

Datenbankmigration
Der Ausdruck "Datenbankmigration" klingt für Anfänger höchstwahrscheinlich etwas beängstigend. Ich hoffe, der Leser weiß, wofür die Datenbank gedacht ist (im Prinzip natürlich zum Speichern von Informationen) und hat in seinem Leben sogar mehr als
"SELECT * FROM Customers" in SQL-Befehlen geschrieben. Das sollte reichen.
Die Migration ist also eine Art Steuerungssystem zum Übertragen Ihrer Tabellen in die KB mithilfe des Tabellenkonstruktors. Durch die Migration können Sie Fehler und Konflikte beim Erstellen von Tabellen in der Datenbank für ein großes Projekt zusammen mit Mitgliedern eines anderen Teams vermeiden. Darüber hinaus können Sie auf diese Weise mit der Datenbank interagieren, ohne Tools wie MySQL WorkBench oder PhpMyAdmin zu verwenden, sondern direkt aus dem Code, abhängig von den Anforderungen Ihres Projekts in den Datentabellen. Das Hinzufügen und Entfernen von Tabellen wird in der Migrationshistorie aufgezeichnet, und jetzt haben mindestens die Zeitfenster einen Kopf weniger Kopfschmerzen.


ORM
ORM ist ein objektrelationales Mapping-System, das Datenbanken mit objektorientierten Programmierkonzepten verknüpft.
Auf den ersten Blick klingt es beängstigend, aber dies hängt direkt mit der Migration von Datenbanken zusammen: Jede Klasse hat ihre eigene Klasse - ein Modell, das nur für die Arbeit mit dieser Tabelle verwendet wird. Dies ermöglicht es nicht, unnötige Arbeit in der Datenbank selbst zu züchten, sondern direkt aus dem Projekt heraus erneut mit ihr zu interagieren. Infolgedessen ist es sowohl bequemer als auch zuverlässiger. Natürlich wird es einige Zeit dauern, die Befehle und Funktionen der Modellgenerierung zu beherrschen, aber es wird viel mehr dauern, um ein großes Projekt mit einer großen Anzahl von Tabellen zu erstellen.
Blade-Vorlagen: Eine bequeme Ansicht der Ansicht
Blabe-Vorlagen bieten die Möglichkeit, Ihre Ansichten der Ansicht bequem zu binden. So würde es in nativem PHP aussehen:
<?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>
Stimmen Sie zu, es sieht viel ordentlicher aus! Natürlich ist dies der Controller-Code und der Export aus den restlichen Blade-Vorlagen, aber bei einem großen Projekt ist dies nur bequemer.

Guter Assistent Artisan
Artisan ist eine Befehlszeilenschnittstelle, die mit Laravel geliefert wird. Sie können Modelle, Controller, neue Tests und Benachrichtigungen direkt über die Befehlszeile generieren. Dies ist viel praktischer als das Kopieren einer Klassenvorlage von irgendwoher oder sogar das Schreiben mit Stiften von irgendwoher.
Anwendungstests
Wenn Sie Ihre Projekte über TDD / BDD (Entwicklung durch Testen / Entwicklung durch Verhalten) entwickeln möchten, enthält das Kit PHPUnit (Tests wie Browser / Einheit / Funktion werden unterstützt) sowie ein Paket zum Generieren gefälschter Faker-Inhalte (nützlich, z. beim Testen der Datenbank, da Sie sie nicht selbst mit Inhalten füllen müssen, die der Benutzer normalerweise dort hinzufügt).
Viele angenehme Dinge
Möchten Sie, dass die Authentifizierung über soziale Netzwerke schnell in Ihrer Anwendung angezeigt wird? Kein Problem, Laravel Socialite eilt zur Rettung. Möchten Sie das Caching konfigurieren? Kein Problem, sofort einsatzbereit. Haben Sie viele Projekte, die auf verschiedenen VPS-Diensten gehostet werden? Laravel Forge an Ort und Stelle. Benötigen Sie WebSockets, zum Beispiel für den Chat? Kein Problem. Und so kann es sehr lange dauern.
Warum sollte ich dieses Laravel unterrichten?
Jetzt nimmt Laravel zweifellos die Position des wichtigsten PHP-Frameworks ein. Laut Github liegen die Repositories mit Laravel bei 195.000 gegenüber 35.000 für Yii und 43.000 für Symfony. Dies ist vielleicht nicht der ehrlichste Vergleich, aber warum versuchen Sie es dann nicht mit Laravel?