Einführung in Lumen

Lumen ist ein brandneues PHP-Mikro-Framework, das vom Autor des Laravel-Frameworks Taylor Otwell entwickelt wurde. Nicht betonen, obwohl Lumen Laravel nicht ersetzen soll. Tatsächlich ist die Idee hinter Lumen, dass es Ihre bestehenden oder zukünftigen Laravel-Anwendungen ergänzt.

Taylor Otwell entwickelte Lumen für einige sehr spezifische Zwecke, nämlich Mikrodienste und APIs. Kurz gesagt ist ein Microservice ein kleinerer, entkoppelter Prozess, der mit einer größeren Anwendung kommuniziert, z. unsere Laravel-Anwendung.

In diesem Artikel möchte ich auf die Unterschiede in Lumen eingehen, wann wir Lumen verwenden sollten und wie wir Lumen verwenden können. Ich erkläre auch, wie wir unsere Lumen-Anwendung nehmen und leicht zu einer Laravel-Anwendung mit vollem Stapel migrieren können. Es wird nicht viel Code geben, da Lumen dem von Laravel sehr ähnlich ist. Lass uns anfangen.

Was gibt's Neues?

Dies wird höchstwahrscheinlich die erste Frage sein, die viele von Ihnen stellen werden. In Wirklichkeit ist mit Lumen abgesehen vom Leim nicht wirklich viel "neu". Lumen verwendet immer noch die meisten Illuminate-Komponenten, aus denen sich das Laravel-Gerüst zusammensetzt (es fehlt nur ein Paar). Betrachten Sie es als abgespeckte Laravel-Installation. 

Ziel ist es, die Leistung zu maximieren, und um diese Leistungssteigerung zu erreichen, wurden einige Dinge geändert. Die wichtigsten davon sind folgende:

  1. Weniger Konfiguration. Viel Lumen ist vorkonfiguriert. In der Tat werden Sie feststellen, dass es keine gibt Konfig Verzeichnis in einer Lumen-Installation. Stattdessen verwenden Sie die .env Dateien, um die meisten Ihrer Anwendung zu konfigurieren.
  2. Anderer Router. Dies ist wahrscheinlich der größte Unterschied und der Grund, warum es so schnell sein kann, wie es ist. Den Symfony-Router nutzt Lumen nicht wie sein großer Bruder Laravel. Stattdessen verwendet Lumen FastRoute, eine von Nikita Popov entwickelte, leichte Routing-Implementierung.

Hier gibt es einige Kompromisse. FastRoute ist eine sehr schnelle Implementierung, aber nicht so viele Funktionen wie der Symfony-Router. Wenn Sie das Unterdomänenrouting verwenden möchten, müssen Sie bei einer Laravel-Installation bleiben, die den Symfony-Router verwendet. 

Der andere erwähnenswerte Kompromiss besteht darin, dass Sie zur feineren Kontrolle der Konfiguration bestimmter Komponenten Konfigurationsdateien innerhalb von ändern müssen Verkäufer / Laravel / Lumen-Rahmen Verzeichnis. Der Großteil der Konfiguration kann über die vorgenommen werden .env Dateien, aber einige weniger konfigurierte Dinge sind nicht direkt konfigurierbar.

Sollte ich jetzt zu Lumen wechseln??

Die Antwort hier wird davon abhängen, aber wahrscheinlich nicht. Wenn Sie eine Anwendung auf Laravel (4 oder 5) entwickeln oder entwickelt haben, müssen Sie wahrscheinlich nicht sofort auf Lumen umsteigen. Lumen kann zwar eine vollständige Webanwendung entwickeln, eignet sich jedoch besser für kleinere, entkoppelte Dienste und APIs.

Wann kann ich es verwenden??

Ich kann Ihnen nicht sagen, wann Sie ein Framework, das Ihnen zur Verfügung steht, verwenden können und wann nicht. Ich werde jedoch einige Empfehlungen geben, wann Sie die Verwendung von Lumen für einen Teil Ihres nächsten Projekts in Betracht ziehen könnten.

Nehmen wir an, Sie bauen eine große Web-Shop-Anwendung. Sie installieren also Laravel und arbeiten an einer monolithischen Anwendung. Nun, es ist nichts falsch mit diesem Ansatz, und Sie werden feststellen, dass es gut für Sie funktioniert. Wenn ja, mach weiter. Wenn Sie feststellen, dass Sie mit der Komplexität überfordert sind oder die Dinge ein wenig aus dem Ruder laufen, möchten Sie sie vielleicht in kleinere, handhabbarere Teile aufteilen.

Sie würden Lumen verwenden, um für jeden entkoppelten Dienst separate Anwendungen zu erstellen. Für unseren Shop können wir die Abrechnung, E-Mail-Benachrichtigungen, den Versand und die Nachverfolgung in separaten Anwendungen aufteilen. Jede dieser Anwendungen wäre eine eigenständige Lumen-Installation, und jede Anwendung würde nur eine bestimmte Aufgabe ausführen. 

Damit unsere Hauptanwendung mit unseren entkoppelten Diensten kommunizieren kann, verwenden wir Warteschlangen und einen Dienst wie Amazon SQS. Wir können Warteschlangen verwenden, um Aufträge einfach in die Warteschlange zu stellen, und jeder Dienst wartet auf seine jeweiligen Aufträge und verarbeitet sie, während sie in die Warteschlange gestellt werden. Der Vorteil dieses Ansatzes ist, dass jeder Dienst unabhängig voneinander skaliert und implementiert werden kann. 

Sie können Lumen auch verwenden, um eine API zu erstellen, die mit Hilfe eines HTTP-Clients wie Guzzle auch von Ihrer Hauptanwendung verwendet werden kann. Durch diese Entkopplung können Sie die Geschäftsseite Ihrer Anwendung skalieren und optimieren, ohne den Rest zu beeinträchtigen.

Okay, wie benutze ich es??

Inzwischen sollten Sie eine gute Vorstellung davon haben, ob Lumen der richtige Schritt für Sie ist oder nicht. Die Installation von Lumen ist so einfach wie die Installation von Laravel: eine einfache Komponist erstellen-Projekt Befehl, oder Sie können das installieren Lumen Befehl zum Erstellen neuer Projekte. Wir verwenden Composer einfach, um eine Neuinstallation zu starten.

Komponist Anlegenprojekt Laravel / Lumen LumenProject --prefer-dist

Composer wird alle Abhängigkeiten aufheben. Sie können Artisan verwenden, um die Anwendung schnell bereitzustellen, um einen Blick darauf zu werfen, oder Sie können eine Virtual Host- oder Homestead-Site einrichten. Auf jeden Fall, sobald Sie den Pfad zu Ihrer Lumen-Installation erreicht haben, sehen Sie die glänzende Spritzenseite, die Sie darüber informiert, dass Lumen gut ist.

Die Konfiguration erfolgt alles in der .env Dateien, so möchten Sie entweder die .env.beispiel Datei oder kopieren Sie den Inhalt in eine neue Datei.

Das verbleibende Bootstrapping, das Sie wissen möchten, befindet sich im bootstrap / app.php Datei. Wenn Sie das verwenden .env Konfiguration oben erwähnt, dann möchten Sie unkommentieren Dotenv :: load (__ DIR __. '/… /');. Wenn Sie durch diese Datei scrollen, werden mehrere kommentierte Zeilen angezeigt, die Sie möglicherweise auskommentieren möchten. Es gibt das Laden von Fassaden, Eloquent, einige Middlewares und die Registrierung anderer Dienstleister.

Sie haben jetzt eine frisch installierte und konfigurierte Kopie von Lumen bereit, um etwas Erstaunliches zu bauen.

Aber warte, ich brauche jetzt Laravel!

Möglicherweise erstellen Sie Ihre Lumen-Anwendung und alles läuft absolut in Ordnung. Bis zu einem schicksalhaften Tag, an dem Sie feststellen, dass Sie etwas benötigen, das nur das vollständige Laravel-Framework bietet. Stress aber nicht, es ist ein extrem schmerzfreies Upgrade. Hier sind die Schritte, die zu befolgen sind:

  1. Installieren Sie eine neue Kopie von Laravel 5.
  2. Kopieren Sie über Ihre App Verzeichnis. Beachten Sie, dass Sie möglicherweise einige Dinge vom L5 benötigen App Verzeichnis, wie die Anbieter.
  3. Kopieren Sie Ihre Konfiguration in die entsprechende Datei im Ordner Konfig Verzeichnis.
  4. Kopieren Sie über jedes benutzerdefinierte Bootstrapping.
  5. Einige Routen korrigieren. Da Lumen FastRoute verwendet, müssen Sie wahrscheinlich einige Routen optimieren, damit sie mit dem Symfony-Router kompatibel sind.

Dies sollte der größte Teil des zu kopierenden Dokuments sein, um Ihre Lumen-Anwendung zu Laravel zu migrieren. Natürlich funktioniert dies in beide Richtungen, sodass Sie eine Laravel-Anwendung problemlos nach Lumen migrieren können, wenn Sie feststellen, dass Sie nicht alles benötigen, was das Full-Stack-Framework bietet.

Fazit

Zum Abschluss möchte ich nur darauf hinweisen, dass ich die Verwendung von Lumen in erster Linie für entkoppelte Dienste und APIs plädiere, die beabsichtigt sind. Das bedeutet nicht, dass Sie keine vollständige Anwendung auf Lumen erstellen können, weil Sie es können. Wenn Sie sich dafür entscheiden, ist das in Ordnung. Es gibt keine Regeln, die in eine Steintafel eingraviert sind und Ihnen sagen, was Sie für Ihre Projekte verwenden können und was nicht. Am Ende des Tages liegt die Entscheidung bei Ihnen. Wägen Sie Ihre Optionen ab, planen Sie Ihr Projekt, entscheiden Sie, was Sie benötigen, konsultieren Sie Ihr Team und treffen Sie Ihre endgültige Entscheidung.