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

25 Laravel Tipps und Tricks

by
Difficulty:IntermediateLength:LongLanguages:

German (Deutsch) translation by Władysław Łucyszyn (you can also view the original English article)

Es gab eine Zeitperiode, in der PHP und seine Gemeinschaft aus Mangel an besseren Worten nicht gehasst wurden. Anscheinend war der Schlagzeilenwitz eines jeden Tages einer, der sich darauf bezog, wie schrecklich PHP war. Mal sehen, welcher neue PHP-Slamming-Blog-Artikel wird heute veröffentlicht?

Ja, leider waren die Gemeinschaft und das Ökosystem einfach nicht auf dem gleichen Niveau wie andere moderne Sprachen.

Ja, leider waren die Gemeinschaft und das Ökosystem einfach nicht auf dem gleichen Niveau wie andere moderne Sprachen. Es schien, dass PHP dazu bestimmt war, seine dominierende Lebensdauer in Form von unordentlichen WordPress-Themen auszuleben.

Aber dann, ganz erstaunlich, begannen sich die Dinge zu ändern - und zwar auch schnell. Wie eine Hexe, die den Topf rührte, begannen innovative neue Projekte aus dem Nichts zu kommen. Das vielleicht bemerkenswerteste dieser Projekte war Composer: der definitive Abhängigkeitsmanager von PHP (nicht unähnlich dem Bundler von Ruby oder dem NPM des Knotens). Während in der Vergangenheit PHP-Entwickler gezwungen waren, PEAR in Form zu bringen (in der Tat ein Albtraum), können sie jetzt dank Composer einfach eine JSON-Datei aktualisieren und sofort ihre gewünschte Abhängigkeit ziehen. Ein Profiler hier, ein Test-Framework dort... alles in Sekunden!

In der überfüllten PHP-Framework-Welt, als CodeIgniter zu verpuffen begann, entstand Taylor Otwells Laravel-Framework aus der Asche, um zum Liebling der Community zu werden. Mit solch einer einfachen und eleganten Syntax war das Erstellen von Anwendungen mit Laravel und PHP - richtig Spaß! Mit Version 4 des Frameworks, das sich stark auf den Composer auswirkte, schienen sich die Dinge schließlich für die Community zu konzentrieren.


Willst du Migrationen (Versionskontrolle für deine Datenbank)? Erledigt. Wie wäre es mit einer leistungsfähigen Active-Record-Implementierung? Klar, Eloquent wird es ganz gut machen. Was ist mit Testeinrichtungen? Na sicher. Und Routing? Höchstwahrscheinlich. Was ist mit einer stark getesteten HTTP-Schicht? Dank Composer kann Laravel viele der hervorragenden Symfony-Komponenten nutzen. Wenn es darauf ankommt, sind die Chancen, wenn Sie es brauchen, Laravel bietet es an.


Während PHP früher einem Spiel von Jenga nicht unähnlich war - nur einen Block davon entfernt, in Stücke zu fallen -, konnte dank Laravel und Composer plötzlich die Zukunft nicht besser aussehen. Also zieh ein paar Schattierungen aus und schau dir alles an, was der Rahmen zu bieten hat.


1. Eloquente Abfragen

Laravel bietet eine der leistungsfähigsten Active-Record-Implementierungen in der PHP-Welt. Nehmen wir an, Sie haben eine orders Bestellungstabelle, zusammen mit einem Order Eloquent-Modell:

Wir können problemlos eine beliebige Anzahl von Datenbankabfragen mit einfachem, elegantem PHP durchführen. Keine Notwendigkeit, chaotischen SQL im Raum zu werfen. Lass uns alle Bestellungen greifen.

Erledigt. Oder vielleicht sollten diese Bestellungen in Übereinstimmung mit dem Veröffentlichungsdatum zurückgegeben werden. Das ist einfach:

Was ist, wenn wir anstatt einen Datensatz zu holen, stattdessen eine neue Bestellung in der Datenbank speichern müssen. Klar können wir das machen.

Fertig! Mit Laravel sind Aufgaben, die früher mühsam waren, lächerlich einfach.


2. Flexibles Routing

Laravel ist einzigartig, da es auf verschiedene Arten verwendet werden kann. Bevorzugen Sie ein einfacheres, mehr Sinatra-ähnliches Routing-System? Klar, Laravel kann das ganz einfach mit Verschlüssen anbieten.

Dies kann sich für kleine Projekte und APIs als hilfreich erweisen, aber die Chancen stehen gut, dass Sie Controller für die meisten Ihrer Projekte benötigen. Das ist okay; Laravel kann das auch!

Erledigt. Beachten Sie, wie Laravel mit Ihren Bedürfnissen wächst? Dieses Maß an Unterkunft macht den Rahmen so beliebt wie heute.


3. Einfache Beziehungen

Was tun wir in den Fällen, in denen wir Beziehungen definieren müssen? Zum Beispiel wird eine Aufgabe sicher zu einem Benutzer gehören. Wie könnten wir das in Laravel darstellen? Nun, unter der Annahme, dass die notwendigen Datenbanktabellen eingerichtet sind, müssen wir nur die zugehörigen Eloquent-Modelle optimieren.

Und damit sind wir fertig! Nehmen wir alle Aufgaben für den Benutzer mit einer ID von 1. Wir können das in zwei Zeilen Code machen.

Da wir die Beziehung jedoch von beiden Enden aus definiert haben, können wir dies auch tun, wenn wir stattdessen den Benutzer abrufen möchten, der mit einer Aufgabe verknüpft ist.


4. Formmodellbindung

Oft kann es hilfreich sein, ein Formular mit einem Modell zu verknüpfen. Das offensichtliche Beispiel hierfür ist, wenn Sie einen Datensatz in Ihrer Datenbank bearbeiten möchten. Mit der Formularmodellbindung können wir die Formularfelder sofort mit den Werten aus der zugehörigen Tabellenzeile füllen.

Da das Formular jetzt mit einer bestimmten Order Instanz verknüpft ist, zeigen die Eingaben die korrekten Werte aus der Tabelle an. Einfach!


5. Cache-Datenbank-Abfragen

Zu viele Datenbankabfragen und sehr schnell kann Ihre Anwendung wie Melasse werden. Glücklicherweise bietet Laravel einen einfachen Mechanismus zum Zwischenspeichern dieser Abfragen, wobei nur ein Methodenaufruf verwendet wird.

Nehmen wir alle questions aus der Datenbank, aber speichern Sie die Abfrage zwischen, da es unwahrscheinlich ist, dass diese Tabelle häufig aktualisiert wird.

Das ist es! Für die nächsten Stunden der Seitenanforderungen bleibt diese Abfrage zwischengespeichert und die Datenbank wird nicht berührt.


6. Zeigen Sie Komponisten an

Es treten Situationen auf, in denen mehrere Ansichten eine bestimmte Variable oder ein bestimmtes Datenelement erfordern. Ein gutes Beispiel hierfür ist eine Navigationsleiste, die eine Liste von Tags anzeigt.

Um die Controller so minimal wie möglich zu halten, bietet Laravel View-Komponisten an, solche Dinge zu verwalten.

Mit diesem Stück Code wird jedes Mal, wenn die Ansicht layouts/nav.blade.php geladen wird, Zugriff auf eine Variable $tags erhalten, die dem bereitgestellten Array entspricht.


7. Einfache Authentifizierung

Laravel verfolgt einen absolut einfachen Ansatz bei der Authentifizierung. Übergeben Sie einfach ein Array von Anmeldeinformationen, die wahrscheinlich aus einem Login-Formular stammen, an Auth::attempt(). Wenn die bereitgestellten Werte mit denen users übereinstimmen, die in der Benutzertabelle gespeichert sind, wird der Benutzer sofort angemeldet.

Was ist, wenn wir den Benutzer abmelden müssen - vielleicht, wenn ein /logout URI getroffen wird? Das ist auch einfach.


8. Ressourcen

In Laravel zu arbeiten, war nie einfacher. Um einen findigen Controller zu registrieren, rufen Sie einfach Route::resource() auf:

Mit diesem Code registriert Laravel acht Routen.

  • GET /orders
  • GET /orders/:order
  • GET /orders/create
  • GET /orders/:order/edit
  • POST /orders
  • PUT /orders/:order
  • PATCH /orders/:order
  • DELETE /orders/:order

Außerdem kann der Companion-Controller über die Befehlszeile generiert werden:

Innerhalb dieses generierten Controllers entspricht jede Methode einer der oben genannten Routen. Für Beispiele wird /orders der index methode orders/create erstellt eine Map create, usw.

Wir verfügen nun über die erforderliche Leistung, um problemlos REST-konforme Anwendungen und APIs zu erstellen.


9. Blatt Templating

Zwar ist PHP von Natur aus eine Vorlagensprache, aber es hat sich nicht zu einem übermäßig guten entwickelt. Das ist aber in Ordnung; Laravel bietet seine Blade-Engine an, um die Lücke zu füllen. Benennen Sie Ihre Ansichten einfach mit der Erweiterung .blade.php und sie werden automatisch entsprechend analysiert. Nun können wir solche Dinge tun wie:


10. Testeinrichtungen

Da Laravel Composer verwendet, haben wir sofort die Unterstützung von PHPUnit im Framework, out-of-the-box. Installieren Sie das Framework und führen Sie phpunit von der Befehlszeile aus, um es zu testen.

Aber noch besser, Laravel bietet eine Reihe von Testhelfern für die häufigsten Arten von Funktionstests.

Lassen Sie uns überprüfen, ob die Startseite einen Statuscode von 200 zurückgibt.

Oder vielleicht möchten wir bestätigen, dass der Benutzer bei der Veröffentlichung eines Kontaktformulars mit einer Flash-Nachricht zur Startseite zurückgeleitet wird.


11. Remote-Komponente

Als Teil von Laravel 4.1 - geplant für die Veröffentlichung im November 2013 - können Sie ganz einfach einen Artisan-Befehl in SSH in Ihren Server schreiben und eine beliebige Anzahl von Aktionen ausführen. Es ist so einfach wie die Verwendung der SSH Fassade:

Übergeben Sie ein Array von Befehlen an die run() Methode, und Laravel wird den Rest erledigen! Da es sinnvoll ist, Code wie diesen als Artisan-Befehl auszuführen, müssen Sie nur den Befehl php artisan command:make DeployCommand ausführen und den entsprechenden Code in die fire Methode des Befehls einfügen, um schnell einen dedizierten Bereitstellungsbefehl zu erstellen!


12. Ereignisse

Laravel bietet eine elegante Implementierung des Beobachtermusters, das Sie in Ihren Anwendungen verwenden können. Hören Sie einheimische Ereignisse, wie illuminate.query, oder sogar Feuer und fangen Sie Ihre eigenen.

Eine ausgereifte Verwendung von Ereignissen in einer Anwendung kann einen unglaublichen Effekt auf ihre Wartbarkeit und Struktur haben.

Wie bei den meisten Dingen in Laravel, wenn Sie lieber auf einen Klassennamen als auf eine Schließung verweisen, können Sie das frei tun. Laravel wird es dann aus dem IoC-Container auflösen.


13. Alle Routen anzeigen


Wenn eine Anwendung wächst, kann es schwierig sein zu sehen, welche Routen registriert wurden. Dies gilt insbesondere dann, wenn Ihre routes.php Datei (d. H. Missbräuchliches implizites Routing) nicht ordnungsgemäß behandelt wurde.

Laravel bietet einen hilfreichen routes befehl, der alle registrierten Routen sowie die von ihnen ausgelösten Controller-Methoden anzeigt.


14. Warteschlangen

Denken Sie darüber nach, wenn sich ein Benutzer für Ihre Anwendung anmeldet. Wahrscheinlich muss eine Reihe von Ereignissen stattfinden. Eine Datenbanktabelle sollte aktualisiert werden, eine Newsletter-Liste sollte angehängt werden, eine Rechnung muss erhoben werden, eine Willkommens-E-Mail kann gesendet werden usw. Leider haben diese Arten von Aktionen eine Tendenz, lange zu dauern.

Warum den Benutzer zwingen, auf diese Aktionen zu warten, wenn wir sie stattdessen in den Hintergrund werfen können?

Der vielleicht aufregendste Teil ist jedoch, dass Laravel brillante Unterstützung für Iron.io Push-Warteschlangen bietet. Dies bedeutet, dass wir auch ohne eine Unmenge an "Arbeiter" - oder "Daemon" - Erfahrung die Kraft der Warteschlangen nutzen können. Registrieren Sie einfach einen URL-Endpunkt mit der hilfreichen php artisan queue:subscribe, und Iron.io pingt die ausgewählte URL jedes Mal an, wenn ein Job zur Warteschlange hinzugefügt wird.


Einfache Schritte zu schnellerer Leistung!


15. Einfache Validierung

Wenn Validierung erforderlich ist (und wenn nicht), kommt Laravel wieder zur Rettung! Die Verwendung der Validator Klasse ist so intuitiv wie möglich. Übergeben Sie einfach das zu prüfende Objekt sowie eine Liste von Regeln an die make Methode, und Laravel kümmert sich um den Rest.

Normalerweise wird diese Art von Code in Ihrem Modell gespeichert, was bedeutet, dass die Validierung von beispielsweise einer Bestellung auf einen einzigen Methodenaufruf reduziert werden könnte:


16. Tinker Tinker


Gerade beim ersten Lernen von Laravel ist es hilfreich, mit dem Kern herumzubasteln. Laravels tinker Artisan Kommando kann dabei helfen.

Als Teil der Version 4.1 ist der Befehl tinker noch leistungsfähiger, da er jetzt die beliebte Boris-Komponente nutzt.


17. Migrationen

Stellen Sie sich Migrationen als Versionskontrolle für Ihre Datenbank vor. Zu einem beliebigen Zeitpunkt können Sie alle Migrationen "zurücksetzen", sie erneut ausführen und vieles mehr. Vielleicht liegt die wahre Stärke in der Fähigkeit, eine App in die Produktion zu bringen und einen einzigen php artisan migrate Befehl auszuführen, um Ihre Datenbank sofort aufzubauen.

Um das Schema für eine neue Benutzertabelle vorzubereiten, können wir Folgendes ausführen:

Dadurch wird eine Migrationsdatei generiert, die Sie dann entsprechend Ihren Anforderungen ausfüllen können. Sobald dies abgeschlossen ist, erstellt php artisan migrate die Tabelle. Das ist es! Müssen Sie diese Erstellung rückgängig machen? Einfach! php artisan migrieren:rollback.

Hier ist ein Beispiel für das Schema für eine Tabelle mit häufig gestellten Fragen.

Beachten Sie, wie die Methode drop() die Umkehrung von up() ausführt. Dies ermöglicht uns, die Migration zurückzusetzen. Ist das nicht viel einfacher, wenn man einen Haufen SQL in die richtige Position bringt?


18. Generatoren

Während Laravel eine Anzahl hilfreicher Generatoren anbietet, nimmt das unglaublich hilfreiche Paket von Drittanbietern, genannt "Laravel 4 Generators", dies sogar noch weiter. Generieren Sie Ressourcen, Seed-Dateien, Pivot-Tabellen und Migrationen mit Schema!

In diesem vorherigen Tipp waren wir gezwungen, das Schema manuell zu schreiben. Wenn das Generatorenpaket jedoch aktiviert ist, können wir stattdessen Folgendes tun:

Der Generator wird sich um den Rest kümmern. Dies bedeutet, dass Sie mit zwei Befehlen eine neue Datenbanktabelle vorbereiten und erstellen können.

Laravel 4 Generatoren können über Composer installiert werden.


19. Befehle

Wie bereits erwähnt, gibt es eine Reihe von Fällen, in denen es hilfreich sein kann, benutzerdefinierte Befehle zu schreiben. Sie können verwendet werden, um Anwendungen zu strukturieren, Dateien zu generieren, Anwendungen bereitzustellen und alles dazwischen.

Da dies eine so häufige Aufgabe ist, macht Laravel die Erstellung eines Befehls so einfach wie möglich.

Dieser Befehl generiert das erforderliche Muster für Ihren neuen benutzerdefinierten Befehl. Geben Sie als nächstes aus der neu erstellten app/commands/MyCustomCommand.php den entsprechenden Namen und die Beschreibung ein:

Führen Sie schließlich innerhalb der fire() - Methode der Befehlsklasse eine Aktion aus, die Sie ausführen müssen. Sobald Sie fertig sind, besteht der einzige verbleibende Schritt darin, den Befehl bei Artisan von app/start/Artisan.php aus zu registrieren.

Glaub es oder nicht; das ist es! Sie können jetzt Ihren benutzerdefinierten Befehl vom Terminal aus aufrufen.


20. Mock Fassaden

Laravel nutzt das Fassadenmuster stark. Dies ermöglicht die saubere statisch-ähnliche Syntax, die Sie zweifellos lieben werden (Route::get(), Config::get(), etc.), während Sie dennoch eine vollständige Testbarkeit hinter den Kulissen ermöglichen.

Da diese "zugrunde liegenden Klassen" außerhalb des IoC-Containers aufgelöst werden, können wir diese zugrunde liegenden Instanzen für Testzwecke leicht mit Mocks austauschen. Dies ermöglicht eine solche Kontrolle wie:

Ja, wir rufen shouldReceive direkt von der Fassade. Hinter den Kulissen nutzt Laravel das exzellente Mockery-Framework, um dies zu ermöglichen. Dies bedeutet, dass Sie diese Fassaden frei in Ihrem Code verwenden können, während Sie trotzdem eine 100% ige Testbarkeit zulassen.


21. Form Helfer

Da das Erstellen von Formularen häufig eine mühsame Aufgabe sein kann, hilft Laravels Formularerstellung, um den Prozess zu vereinfachen und viele der mit der Formularkonstruktion verbundenen Idiosynkrasien zu nutzen. Hier sind ein paar Beispiele:

Was ist mit Aufgaben, wie zum Beispiel die Erinnerung an Eingaben aus der vorherigen Formularübergabe? Laravel kann das alles automatisch machen!


22. Der IoC-Container

Das Herzstück von Laravel ist der leistungsstarke IoC-Container, mit dem Klassenabhängigkeiten verwaltet werden können. Bemerkenswerterweise hat der Container die Fähigkeit, Klassen ohne Konfiguration automatisch aufzulösen!

Geben Sie einfach Ihre Abhängigkeiten in den Konstruktor ein, und Laravel verwendet bei der Instanziierung die Reflection API von PHP, um die Typhints intelligent zu lesen und zu versuchen, sie für Sie zu injizieren.

Solange Sie die Klasse aus dem IoC-Container heraus anfordern, wird diese Auflösung automatisch durchgeführt.

Eine wichtige Anmerkung ist, dass Controller immer aus dem IoC-Container heraus aufgelöst werden. So können Sie die Abhängigkeiten Ihres Controllers freischalten und Laravel wird anschließend sein Bestes tun, um sie für Sie zu injizieren.


23. Umgebungen

Während eine einzelne Umgebung für kleine Projekte geeignet ist, werden für mehrere Größenanwendungen mehrere Umgebungen als essentiell angesehen. Entwicklung, Test, Produktion...all das ist essentiell und erfordert eine eigene Konfiguration.

Möglicherweise verwendet Ihre Testumgebung eine Datenbank im Speicher zum Testen. Vielleicht verwendet Ihre Entwicklungsumgebung andere API-Schlüssel. Wahrscheinlich verwendet Ihre Produktionsumgebung eine benutzerdefinierte Datenbankverbindungszeichenfolge.

Zum Glück macht Laravel unsere Arbeit wieder einfach. Sehen Sie sich bootstrap/start.php in Ihrer App an.

Im Folgenden finden Sie eine grundlegende Demonstration zum Festlegen einer lokal Umgebung und einer production basierend auf der Adressleiste des Browsers.

Während dies funktioniert, wird es im Allgemeinen bevorzugt, Umgebungsvariablen für diese Art von Dingen zu verwenden. Keine Bange; das ist in Laravel noch machbar! Geben Sie stattdessen einfach eine Funktion von der detectEnvironment Methode für das Containerobjekt zurück.

Jetzt, wenn keine Umgebungsvariable gesetzt wurde (was Sie für die Produktion tun werden), wird die Umgebung standardmäßig auf local gesetzt.


24. Einfache Konfiguration

Laravel, wieder einmal, nimmt einen tot-einfachen Ansatz zur Konfiguration. Erstellen Sie einen Ordner in app/config, der Ihrer gewünschten Umgebung entspricht, und alle darin enthaltenen Konfigurationsdateien haben Vorrang, wenn der Name der Umgebung übereinstimmt. Um beispielsweise einen anderen Abrechnungs-API-Schlüssel für die Entwicklung festzulegen, könnten Sie Folgendes tun:

Die Konfiguration switcharoo ist automatisch. Geben Sie einfach Config::get('billing.api_key') ein, und Laravel wird die zu lesende Datei korrekt bestimmen.


25. Weiterführendes Lernen

Wenn es um Bildung geht, ist die Laravel-Gemeinschaft trotz ihres relativ jungen Alters ein nie endender Brunnen. In etwas mehr als einem Jahr wurden ein halbes Dutzend verschiedene Bücher veröffentlicht, die sich auf alle Aspekte der Laravel-Entwicklung beziehen.

Erfahren Sie alles von den Grundlagen über das Testen bis hin zum Erstellen und Verwalten großer Apps!

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.