Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Laravel 5
Code

Paketverwaltung in Laravel

by
Difficulty:IntermediateLength:LongLanguages:

German (Deutsch) translation by Wei Zhang (you can also view the original English article)

In diesem Artikel werden wir die Paketverwaltungsfunktion im Laravel-Framework untersuchen. Im Laufe des Artikels werden wir ein reales Beispiel durchgehen, um den Zweck des Artikels zu demonstrieren.

Die Paketverwaltung in Laravel ist eine wichtige Funktion, die es Ihnen ermöglicht, einen Teil der Funktionalität so zu bündeln, dass sie leicht verteilt werden kann. Darüber hinaus können Sie Ihr Paket immer in Repositories wie Packagist und GitHub veröffentlichen, die es anderen Entwicklern ermöglichen, von Ihrem Paket zu profitieren.

Um das Konzept zu demonstrieren, erstellen wir eine Beispielseite in Laravel, die ein Bild in die Amazon S3-Cloud hochlädt. Statt mit dem üblichen Flow zu arbeiten, entwickeln wir es als Paket, das leicht verteilt und gewartet werden kann.

Bevor ich fortfahre, nehme ich an, dass Sie mit dem Laravel-Framework bereits vertraut sind, da ich nicht auf die Details der grundlegenden Konzepte von Laravel eingehen werde.

Außerdem benötigen Sie ein gültiges AWS-Konto und die Anmeldeinformationen für den Zugriff auf die Amazon API, um dem Beispiel in diesem Artikel zu folgen. Stellen Sie also sicher, dass Sie das zuerst einrichten.

Mit allem, was zur Hand ist, sind wir bereit, in die eigentliche Entwicklung einzutauchen.

Einrichten der Paketdateien

Sehen wir uns schnell die Liste der Dateien an, die wir im Verlauf dieses Tutorials implementieren werden.

  • composer.json: Wir müssen die Klassenzuordnung unseres Pakets in der vorhandenen Datei composer.json im Stammverzeichnis des Pakets hinzufügen.
  • config/app.php: Dies ist die vorhandene Datei, die wir verwenden werden, um einen Eintrag unseres benutzerdefinierten Dienstanbieters hinzuzufügen, damit wir Ansichten und Routen mit dieser Datei laden können.
  • composer.json: Dies ist die paketspezifische Datei composer.json, falls Sie das Paket mit anderen verteilen möchten.
  • packages/envato/aws/src/Provider/AwsServiceProvider.php: Die übliche Laravel-Service-Provider-Datei, die zum Laden anderer Komponenten des Pakets verwendet wird.
  • packages/envato/aws/src/routes/web.php: Es lädt die benutzerdefinierten Routen unseres Pakets.
  • packages/envato/aws/src/Controller/AwsController.php: Dies ist die Controller-Datei, die die Anwendungslogik unseres Pakets behandelt.
  • packages/envato/aws/src/views/upload.blade.php: Die View-Datei, die die Rendering-Logik verarbeitet.

Mach dir keine Sorgen, wenn es noch nicht viel Sinn macht, da wir alles im Detail diskutieren werden, während wir es durchgehen.

Einrichten der Voraussetzungen

Wie bereits erwähnt, implementiert unser Paket den Anwendungsfall des Hochladens von Dateien in die Amazon S3-Cloud. In diesem Abschnitt werden die Voraussetzungen erläutert, die eingerichtet werden müssen, damit unser Paket erfolgreich ausgeführt werden kann.

Als Laravel-Entwickler müssen Sie mit Flysystem vertraut sein, das eine schöne Abstraktionsebene für die Interaktion mit dem Dateisystem bietet. Es bietet einfach zu verwendende Treiber, sodass Sie problemlos mit ihm interagieren können, ganz gleich, mit welchem Dateisystem Sie arbeiten - entweder mit dem lokalen Dateisystem oder mit dem AWS S3-Cloud-System.

Um die Unterstützung von Amazon S3 Cloud-Dateisystem mit Flysystem zu ermöglichen, müssen Sie das entsprechende Adapter-Composer-Paket installieren.

Fahren Sie fort und führen Sie den folgenden Composer-Befehl von Ihrem Projektstamm aus, um das Paket flysystem-aws-s3-v3 zu installieren.

Nach der erfolgreichen Ausführung dieses Befehls können Sie jetzt mit Laravel Flysystem auf die gleiche Weise mit Amazon S3 Cloud-Dateisystem interagieren, wie Sie es für das lokale Dateisystem verwendet hätten.

Lassen Sie uns nun schnell die Datei config/filesystems.php aufrufen, um die Einstellungen für das Amazon S3-Dateisystem zu sehen.

Wie Sie sehen, ist die Konfiguration für Amazon S3 bereits vorhanden. Wir müssen nur die entsprechenden ENV-Variablen in der .env-Datei festlegen.

Gehen Sie voran und fügen Sie die folgenden Variablen in Ihre .env-Datei ein.

Natürlich müssen Sie Platzhalter durch ihre tatsächlichen Werte ersetzen. Jetzt können Sie den Flysystem AWS S3-Adapter in Ihrer Laravel-Anwendung verwenden.

Durch die Paketdateien gehen

Um ein eigenes Laravel-Paket zu erstellen, müssen Sie zunächst eine geeignete Verzeichnisstruktur erstellen, die den Konventionen des Laravel-Systems entspricht. Ich nehme an, dass Sie bereits eine grundlegende Laravel-Anwendung ausführen. In der Tat, die Standard-Blog-Anwendung wird auch funktionieren.

Gehen Sie voran und erstellen Sie das packages -Verzeichnis im Stammverzeichnis Ihrer Anwendung. Wenn Sie Ihr Paket mit anderen verteilen, sollte die bevorzugte Struktur Ihres Pakets {vendor_name}/{package_name} lauten.

Wenn Sie dieser Konvention folgen, erstellen Sie ein envato /aws-Verzeichnis im Verzeichnis packages . Wie Sie vielleicht vermutet haben, ist envato der Name des Anbieters und aws steht für den Namen des Pakets. Schließlich erstellen wir ein Verzeichnis packages/envato /aws/src, das die Quelldateien unseres Pakets enthält.

Jetzt müssen wir Laravel über unser neues Paket informieren. Öffnen Sie die Datei composer.json im Stammverzeichnis Ihrer Laravel-Anwendung und fügen Sie den Eintrag "Envato\\Aws\\":"packages/envato/aws/src" im Autoload-Abschnitt hinzu, wie unten gezeigt.

Wie Sie sehen, ist der Envato\Aws\-Namespace dem Verzeichnis packages/envato/aws/src zugeordnet. Jetzt müssen wir nur den Befehl dump-autoload ausführen, um die Composer-Zuordnungen neu zu generieren.

Jetzt können Sie den Envato\Aws\Namespace in Ihrer Anwendung verwenden und er wird die Dateien vom richtigen Ort abholen!

Composer-Datei des Pakets

Lassen Sie uns nun eine paketspezifische composer.json-Datei hinzufügen, damit Sie Ihr Paket an das Paket-Repository verteilen können.

Wechseln Sie zum Verzeichnis packages/envato/aws, und führen Sie den folgenden Befehl aus, um eine composer.json-Datei für Ihr Paket zu generieren.

Sie werden mit den üblichen Fragen konfrontiert, also gehen Sie einfach durch und es wird eine composer.json Datei erstellt.

Zumindest sollte es in etwa so aussehen.

Route

In unserem Paket erstellen wir eine einfache Seite, auf der der Status der hochgeladenen Datei angezeigt wird. Also müssen wir eine Route erstellen, die mit dieser Seite verknüpft ist.

Erstellen wir eine Routendatei unter packages/envato /aws/src/routes/web.php.

Braucht es überhaupt eine Erklärung? Der naheliegende nächste Schritt besteht darin, die zugehörige Controller-Datei zu erstellen.

Controller

Lassen Sie uns eine Controller-Datei unter packages/envato/aws/src/Controllers/AwsController.php mit folgendem Inhalt erstellen.

Lassen Sie uns durch die Datei gehen, um zu verstehen, wofür jeder Codeabschnitt gedacht ist.

Wir starten die Dinge, indem wir einen Namespace unseres Controllers auf den Namespace Envato\Aws\Controllers setzen. Erinnern wir uns daran, dass wir in der root-Datei composer.json das Mapping von Envato\Aws zu packages/envato/aws/src hinzugefügt haben, damit es unsere Paketdateien finden kann.

Als Nächstes haben wir die upload -Methode definiert, mit der lokale Dateien mit der Amazon S3-Cloud synchronisiert werden können. Wichtig ist hier das erste Argument der Upload-Methode, die nach der Abhängigkeit \Illuminate\Contracts\Filesystem\Factory fragt. Während der Ausführung wird der entsprechende Laravel-Vertrag injiziert.

VJetzt könnten wir die Dateisystem-Factory-Instanz verwenden, um Platteninstanzen nach Bedarf zu erstellen. Die Datenträgerinstanz in Laravel ist der Treiber, mit dem Sie einfach auf die zugrunde liegenden Dateisysteme zugreifen können, z. B. die lokale Festplatte, die Amazon S3-Cloud und dergleichen.

Der Einfachheit halber übertragen wir die statische Bilddatei, die bereits unter dem lokalen Standardspeicher von Laravel verfügbar ist, und der Pfad lautetstorage/app/test.jpg.

Als ersten Schritt sollten wir uns den Inhalt der Quelldatei ansehen.

Wenn alles wie erwähnt eingerichtet ist, sollten Sie in der Lage sein, eine Datei mit der put-Methode mit Amazon S3 zu synchronisieren.

Stellen Sie sicher, dass Sie die AWS-Umgebungsvariablen korrekt eingestellt haben, nur für den Fall, dass etwas nicht wie erwartet funktioniert.

Und das Letzte ist, eine View-Datei aufzurufen, die das synchronisierte Bild und eine entsprechende Nachricht anzeigt.

Natürlich haben wir noch keine View-Datei erstellt, und genau darum geht es im nächsten Abschnitt.

Aussicht

Lassen Sie uns eine Ansichtsdatei unter den folgenden Inhalten erstellen: packages/envato/aws/src/views/upload.blade.php.

Es ist eine hübsche Standard-Ansichtsdatei, die das hochgeladene Bild nach dem erfolgreichen Upload anzeigt, oder andernfalls eine entsprechende Fehlermeldung.

Dienstleister

Wir sind fast fertig mit unserem Paket, da wir die notwendigen Dateien erstellt haben. Der nächste Schritt besteht darin, einen Dienstanbieter zu erstellen, damit wir die Routen und Ansichten unseres Pakets registrieren können.

Erstellen wir eine Service-Provider-Datei unter packages/envato/aws/src/Providers/AwsServiceProvider.php mit folgendem Inhalt.

Natürlich hätten Sie die Service-Provider-Datei auch mit dem Befehl artisan erstellen können. Aber es hätte einen zusätzlichen Schritt erfordert, die Datei von app/Providers zu unserem Paket zu verschieben.

Wie auch immer, lassen Sie uns die soeben erstellte Service-Provider-Datei durchgehen.

Zuerst laden wir die Routen und Ansichten, die mit unserem Paket verbunden sind.

Als Nächstes bieten wir die Unterstützung der Veröffentlichung der Ansichten unserer Pakete, damit die Entwickler, die die Ansichten überschreiben möchten, dies tun können. Wenn sie das nächste Mal den Befehl php artisan vendor: publish ausführen, kopiert Laravel die Ansichten aus den packages/envato/aws/src/views/ in resources/views/vendor/aws.

Jetzt können sie die Ansichten im Verzeichnis resources/views/vendor/awsändern, und sie werden automatisch von Laravel anstelle der Ansichten unter packages/envato/aws/src/views/übernommen. In der Tat ist dies die richtige Methode zum Ändern von Paketansichten von Drittanbietern, anstatt die Paketansichten direkt zu ändern.

Soweit der Dienstleister betroffen ist. Wie Sie es erwartet haben, müssen wir den Eintrag des Dienstanbieters in der Datei config/app.php hinzufügen. Fügen Sie den folgenden Eintrag in das provider-Array ein.

Und da sind Sie - jetzt ist alles in Ordnung, damit wir unser Paket testen können.

Fahren Sie fort und führen Sie die URL http://Ihre-Laravel-Anwendung/aws/s3 /Upload in Ihrem Browser aus. Wenn alles gut geht, sollten Sie das Bild auf Ihrer Seite sehen, das aus der Amazon S3-Cloud geladen wurde. Bitte lassen Sie mich wissen, wenn Sie irgendwelche Probleme haben, und ich wäre mehr als glücklich, diese zu beantworten.

Wir sind also in der Schlussnotiz dieses Artikels und ich hoffe, es hat euch gefallen!

Fazit

Heute haben wir eine der wichtigsten Eigenschaften des Laravel-Framework-Paketmanagements besprochen. Bei der Einrichtung unseres benutzerdefinierten Laravel-Pakets haben wir uns anhand eines realen Beispiels gezeigt, wie Sie ein Bild in die Amazon S3-Cloud hochladen können.

Es ist eine wirklich nette Funktion, wenn Sie alle Funktionen zusammenfassen und verteilen möchten. In der Tat könnten Sie dies als eine Option betrachten, um Ihre benutzerdefinierte Modulentwicklung in Laravel anzugehen.

Für diejenigen unter Ihnen, die gerade mit Laravel anfangen oder Ihr Wissen, Ihre Website oder Ihre Anwendung mit Erweiterungen erweitern möchten, haben wir eine Vielzahl von Dingen, die Sie auf Envato Market studieren können.

Wie immer könntest du deine wertvollen Kommentare und Feedback im Feed unten hinterlassen!

Advertisement
Advertisement
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.