Students Save 30%! Learn & create with unlimited courses & creative assets Students Save 30%! Save Now
Advertisement
  1. Code
  2. PHP
Code

Warum Laravel die PHP-Community im Sturm erobert

by
Difficulty:IntermediateLength:LongLanguages:

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

Ich muss zugeben: Irgendwann fühlte ich mich etwas in der PHP-Sprache. Eine Reihe von ergreifenden PHP-Hass-Artikeln umkreisten das Internet wie ein Virus, und einige seiner Flaggschiff-Frameworks, wie CodeIgniter, wurden schnell veraltet. Währenddessen schien Ruby on Rails hinsichtlich Innovation und Entwicklungsfreundlichkeit die Nase vorn zu haben. Mit der Zeit griff ich immer mehr nach meinem Ruby-Werkzeuggürtel.

Aber dann entdeckte ich eines Tages einen neuen, eleganten Rahmen namens Laravel. Zuerst lehnte ich es als einen weiteren Sinatra-Klon ab, der sich schnell ins Nichts verwandeln würde, da der Hauptentwickler ihn aufgab. Aber immer noch, Woche für Woche, waren meine Feeds in meinem sozialen Netzwerk in großer Aufregung und lobten Laravels Lesbarkeit. "Könnte es sein", dachte ich mir, "hat PHP endlich ein wirklich modernes Framework?"

Weitere Informationen über Laravel finden Sie unter http://laravel.com

Ich war nicht länger bereit, am Rande zu sitzen; Es war Zeit, sich einzumischen. Ein Jahr später bin ich einer der größten Evangelisten. Mit Laravel macht PHP eigentlich wieder Spaß! Noch besser, ich glaube nicht mehr, dass PHP für meist persönliche Websites und hässliche WordPress-Blogs zum Scheitern verurteilt ist. Nee; Es ist in der Tat der Glaube dieses Autors, dass wir dank Laravel, Composer und PHP 5.5 die nächste Renaissance der populärsten serverseitigen Sprache des Webs erleben werden.

Um die neueste Entwicklungsversion von Laravel (v4) zu installieren, müssen Sie zuerst Composer installieren. Dann klonen Sie einfach das Repo und installieren Sie die Abhängigkeiten. git clone git://github.com/illuminate/app.git myApp und composer install. Du bist bereit zu gehen!


Beredt

Die meisten PHP-Entwickler beginnen ihre Reise damit, unzählige SQL-Zeilen direkt in ihr kühles, unlesbares PHP zu schachteln. Es ist unnötig zu erwähnen, dass die grundlegendsten Websites schnell zu einem unauffälligen Durcheinander führen.

Erinnern Sie sich noch daran, als Sie zum ersten Mal von ActiveRecord von Ruby on Rails gehört haben? Nun, im PHP-Ende der Welt ist Eloquent die erste Implementierung.

Benötigen Sie Beispiele?

Leute, es ist nicht möglich mehr lesbaren Code in PHP zu schreiben! Nun wäre es eine Sache, wenn Eloquent es Ihnen nur erlaubte, grundlegende CRUD-Operationen für einen Tisch auszuführen, aber das ist sicherlich nicht der Fall.

Berücksichtigen Sie Tabellenbeziehungen, z. B. einen Benutzer und seine jeweiligen Aufgaben. In Laravel können wir, nachdem wir für jedes Modell eine schnelle Nachschlagemethode festgelegt haben, problemlos eine Eins-zu-Eins-Beziehung oder eine beliebige Verknüpfung für diese Angelegenheit behandeln. Hier sind einige Beispiele, um Ihren Appetit anzuregen.

Es ist keine Frage, Eloquent als die beste ActiveRecord-Implementierung in PHP zu betrachten.


Komponistenpakete

Beginnend mit Laravel 4 (derzeit in Alpha) wird das gesamte Framework modularisiert und als einzelne Composer-Pakete verfügbar sein.

Composer ist ein Verpackungssystem für PHP, das PEAR ähnelt, jedoch besser ist. Es macht den Prozess des Abhängigkeitsmanagements so einfach wie möglich.

Denken Sie an das bestehende Rahmenökosystem. Im Moment müssen Sie mit den Kernfunktionen der einzelnen Frameworks leben. Sie können Eloquent beispielsweise nicht in einer CakePHP-Anwendung verwenden. Wie Sie sich vorstellen können, hat diese Wahrheit dazu geführt, dass das Rad immer wieder neu erfunden wurde ... und immer wieder.

Sehr geehrte Damen und Herren, die Zukunft von PHP ist modular. Warum ein aufgeblähtes, massives Gerüst installieren, wenn Sie nur wenige seiner Angebote benötigen? Nun, bald musst du nicht. Benötigen Sie in einem einfachen Projekt nur Eloquent? Gut - überhaupt kein Problem! Installieren Sie es einfach über Composer und machen Sie weiter!

Wenn wir also zu einer eher paketbasierten, modularen PHP-Welt wechseln, wie passt Laravel dazu? Stellen Sie sich das als eine vorgegebene Sammlung von Paketen vor, die in einen Bogen gehüllt sind! Besser noch, sollten Sie ein Update auf die neueste Version des Frameworks durchführen müssen, ist dies genauso einfach wie das Ausführen eines composer updates.

Als Beispiel für die dadurch gebotene Flexibilität fügen wir die beliebte Mockery-Testbibliothek einer Laravel-Anwendung hinzu. Beginnen Sie mit einem neuen Laravel 4-Projekt und bearbeiten Sie die Datei composer.json, um Mockery zu erfordern.

Auf Packagist.org finden Sie eine Liste der verfügbaren Composer-Pakete sowie Installationsanweisungen.

Nachdem wir Composer darüber informiert haben, dass für unsere Anwendung Mockery erforderlich ist, können wir die entsprechenden Abhängigkeiten installieren.

Und das ist es! Wir können jetzt Mockery in unseren Tests verwenden. Dies ist die Kraft von Composer und Laravel 4 bei der Arbeit! Wir haben Räder. Lass uns aufhören, neue zu schaffen! Hunderte von Hunderten von Paketen sind über Packagist.org erhältlich.

Hunderte von Hunderten von Paketen sind über Packagist.org erhältlich.


Routen

Die meisten Anfänger von PHP-Entwicklern kennen nichts anderes als die natürlichsten Routensysteme. Erstellen Sie eine Verzeichnisstruktur, die Ihrer gewünschten URI entspricht, und fahren Sie fort. Fügen Sie dem folgenden Verzeichnis beispielsweise eine Datei index.php hinzu: blog/admin/. Nun können Sie darauf zugreifen, indem Sie zu: localhost:8888/blog/admin/index.php wechseln. Einfach! Nun, vielleicht zuerst; Sie werden jedoch wahrscheinlich mehr Flexibilität und Kontrolle darüber haben, welche Route in Ihrer Anwendung ausgelöst wird.

Laravel verfolgt einen unglaublich einfachen und benutzerfreundlichen Weg beim Routing. Schreiben wir als Beispiel die Route, die erforderlich ist, um eine Ansicht für das Profil eines Benutzers anzuzeigen.

Wenn nun ein Benutzer example.com/users/1 anfordert, wird die Ansicht users/profile.php gerendert.

Alternativ können wir herkömmliche Steuerungen verwenden, um stattdessen die Logik zu handhaben.

Nun ist Controller/Users.php für das Rendern der Ansicht verantwortlich, insbesondere für die show-Methode.


Einfache Authentifizierung

Nahezu jede Webanwendung einer Substanz erfordert eine Art Authentifizierung. Laravel bietet eine einfache, aber einfach zu bedienende Benutzeroberfläche zur Authentifizierung von Benutzern.

Beginnen Sie mit dem Erstellen einer users-Tabelle mit den erforderlichen Feldern für username und password. Denken Sie daran: Dies ist ein perfekter Anwendungsfall für eine Migration!

Laravel kann dann attempt , sich bei einem Benutzer anzumelden.

Hier ist ein einfaches Beispiel ohne den Validierungsaspekt.

Beachten Sie, dass Laravel hinter den Kulissen das bereitgestellte Passwort automatisch vergleicht und es mit dem in der Tabelle users gespeicherten vergleicht.

Unter der Annahme, dass die Anmeldeinformationen des Benutzers übereinstimmen, wird die Benutzer-ID in der Sitzung gespeichert und der Benutzer wird angemeldet. Bei nachfolgenden Anforderungen können Sie den Benutzernamen des aktuell angemeldeten Benutzers mit folgendem Befehl abrufen:


Email schicken

Geben Sie es zu: Das Versenden von E-Mails über Ihre Anwendung ist immer komplizierter als es sein sollte. Nicht mehr in Laravel 4!

Aufbauend auf dem beliebten SwiftMailer-Paket finden Sie jetzt eine neue config/mail.php-Datei in Ihrer Anwendung. Hier können Sie die erforderlichen Anmeldeinformationen für Ihren E-Mail-Anbieter angeben. Hier ist eine abgespeckte Version dessen, was Sie finden werden:

Ersetzen Sie die entsprechenden Werte einfach durch die Werte Ihres E-Mail-Servers.

Als nächstes benötigen wir eine Ansicht für die E-Mail. Erstellen wir eine, mit dem Namen welcome.blade.php, die verwendet wird, wenn sich ein neues Mitglied auf unserer Justin Bieber-Fanseite registriert.

Wenn alles vorhanden ist, richten wir die erforderliche Beispielroute ein und senden die E-Mail.

Ganz einfach, wie? Wir holen den neuen Benutzer aus der Tabelle und senden eine E-Mail an die mit diesem Benutzer verbundene E-Mail-Adresse. Dank der SwiftMailer-Funktion ist das Durchführen scheinbar komplexer Aktionen wie das Anhängen von Dateien ein Kinderspiel! Nun erhält jedes neue Mitglied bei der Anmeldung ein Foto von Justin Bieber. Perfekt!


BFFs mit Backbone

"Backbone bietet Struktur für Ihren chaotischen Spaghetti-Code!"

Laravel 4 macht die Erstellung von RESTful-APIs so einfach wie möglich. Der Schlüssel ist, wie JSON standardmäßig von einer Route zurückgegeben wird.

Stellen wir uns vor, dass wir eine Liste aller Benutzer als JSON zurückgeben müssen. Nun, Chuck, wir können das in einer einzigen Zeile erreichen.

Wenn Sie diese Route ausführen, wird ein bisschen JSON angezeigt, z. B .:

Fragen Sie sich, wo sich das Feld password befindet. In Laravel können Sie im verknüpften Modell der Tabelle über eine $hidden -Eigenschaft angeben, welche Felder vor der JSON-Ausgabe verborgen werden sollen.

Mit einer JavaScript-Bibliothek wie Backbone können wir diese Daten jetzt problemlos abrufen.

Wie wäre es stattdessen, einen einzelnen Benutzer abzurufen? Nun, wir müssen zuerst die richtige Laravel-Route einrichten:

Wie wir erfahren haben, wird der JSON für den angeforderten Benutzer zurückgegeben (ohne das password). Als Nächstes erstellen wir ein Backbone-Modell und rufen die Daten ab.

Beachten Sie, wie die Hauptlast der Arbeit auf der Kundenseite liegt? Unser Laravel-Code ist so gut wie möglich.


Migrationen

Wenn Sie ausschließlich PHP-Entwickler sind, haben Sie wahrscheinlich noch nicht die Freude an Migrationen erlebt, die von Ruby on Rails erstmals populär wurden.

Stellen Sie sich Migrationen als Versionskontrolle für Ihre Datenbank vor. Was würde passieren, wenn Sie am Tag nach dem Hinzufügen dieses neuen Felds zu Ihrer Tabelle tasks feststellten, dass es überhaupt nicht erforderlich war. Nun, Sie würden das Feld manuell entfernen, richtig? Aber was ist mit den anderen Entwicklern in Ihrem Team? Ihr Code könnte brechen, wenn Sie es ihnen nicht sagen!

Bei Migrationen machen wir jedoch lediglich die vorherige Migration rückgängig und setzen unseren Tag fort! Noch besser: Wenn Sie Änderungen an Ihren Server senden, aktualisiert ein einfacher php artisan migrate-Befehl Ihre Produktionsdatenbank automatisch. In Kombination mit dem Schema-Generator von Laravel wird das Verwalten von Datenbanken so einfach wie möglich.

Erstellen Sie eine Migration, um unserer Datenbank eine neue users-Tabelle hinzuzufügen. Von der Kommandozeile aus:

Im obigen Snippet geben wir den Namen der Tabelle sowie das Flag --create an, um anzugeben, dass wir eine neue Tabelle erstellen, anstatt eine vorhandene zu ändern.

Dieser Befehl erstellt eine neue Migrationsdatei in unserer Anwendung. Wir können dann die Laravel-Schemaklasse nutzen, um das Schema unserer Tabelle vorzubereiten.

Beachten Sie, dass diese Klasse zwei Methoden bietet: up und down, die angeben, welche Aktion Laravel bei der Ausführung einer Migration ausführen soll, und sie zurücksetzen.

In diesem Fall erstellen wir bei up() eine neue Tabelle, tasks, und geben zwei Felder für die idbzw. den titel der Aufgabe an. Wenn Sie die Migration rückgängig machen, löschen Sie einfach die Tabelle.

Führen Sie die Migration aus, indem Sie zum Terminal zurückkehren und Folgendes eingeben:

Das ist es! Sie haben jetzt eine brandneue tasks -Tabelle mit zwei Feldern! ... Ähhh, musst du es zurückrollen? Einfach:

Auf Wiedersehen tasks-Tabelle.


Blade

Die Blaver-Template-Engine von Laravel bietet eine klare Syntax für Ansichten. Um beispielsweise mit regulärem PHP eine Liste von Personen zu filtern und deren Namen innerhalb eines Listenelements zu wiederholen, schreiben wir möglicherweise:

Diese Syntax kann auf die meisten Kontrollstrukturen von PHP angewendet werden.

Das ist nicht so schlimm, aber wir können es besser machen. Jede Laravel-Ansicht, die die Dateierweiterung .blade.php enthält, wird entsprechend analysiert. Daher kann das vorherige Snippet dann ersetzt werden durch:

Beachten Sie, wie Variablen, die wiederholt werden sollen, in {{ }} eingeschlossen werden, ähnlich wie in einer JavaScript-Templating-Engine, z.

Blade kann auch für elegante Layouts und Masterseiten verwendet werden. Lassen Sie uns eine Basis-Master-Ansicht erstellen, um diese Funktionalität zu demonstrieren.

Die @yield-Zeile ist der Schlüssel. Dies gibt an, dass alle untergeordneten Ansichten mit einer Abschnitts-id des containers dort verschachtelt werden sollten.

Als nächstes erstellen wir eine neue Ansicht.

Erledigt! Einfache Masterseiten in PHP!


Erfinderische Controller

Das Erstellen eines RESTful-Dienstes in PHP kann sich ohne etwas Hilfe als etwas schwierig erweisen. In Laravel 4 könnte es nicht einfacher sein. Das Framework bietet das, was wir als Restful Resources bezeichnen. Lass es uns testen.

Geben Sie in Ihrer routes -Datei eine neue Ressource an.

Diese Codezeile gibt an, dass wir eine neue Ressource, tasks, erstellen und den TasksController-Controller für die Verarbeitung der Logik für jede Route verantwortlich machen möchten.

Wenn Sie die Prinzipien von REST befolgen, registriert diese Ressource automatisch Routen für:

  • GET tasks(Alle Aufgaben anzeigen)
  • GET tasks/{id} (Einzelne Aufgabe anzeigen)
  • GET tasks/create(Formular zum Anlegen einer neuen Aufgabe anzeigen)
  • POST tasks (Neue Aufgabe erstellen)
  • GET task/{id}/edit (Einzelne Aufgabe bearbeiten)
  • PUT tasks/{id}(Update-Aufgabe)
  • DELETE tasks/{id}(Aufgabe löschen)

Als Nächstes erstellen wir diesen TasksController, aber anstatt ihn manuell auszuführen, überlassen wir Artisan die Boilerplate.

Dadurch wird ein neuer controller/TasksController.php-Controller erstellt und mit etwas Boilerplate gefüllt.

Jede dieser Methoden wird ausgelöst, wenn die entsprechende RESTful-Route ausgelöst wird. Um ein Formular zum Erstellen eines neuen task anzuzeigen, laden wir die entsprechende Ansicht in die Methode create. Diese wird ausgelöst, wenn example.com/tasks/create angefordert wird. Dieses Formular sollte POST an /tasks. In diesem Fall wird die Methode store ausgelöst.

Es könnte nicht sauberer sein!

Die neuesten offiziellen Laravel-Screencasts finden Sie auf der Vimeo-Seite von UserScape


Datenbank Seeding

Wie oft haben Sie selbst festgestellt, dass Sie eine Datenbanktabelle mit Dummy-Datensätzen zum Testen manuell "säen"? Für mich ist es eine große Anzahl! In Laravel 4 können wir eine seed-Datei für eine Tabelle angeben.

Um es auszuprobieren, erstellen Sie eine neue Datei mit demselben Namen wie die entsprechende Tabelle im Verzeichnis app/database/seeds Ihrer Anwendung. Diese Datei sollte ein Array von Arrays enthalten, von denen jedes die erforderlichen Schlüssel-Wert-Paare enthält. Hier ist ein Beispiel:

Wir haben jetzt drei neue Zeilen für die Tabelle tasks in unserer Datenbank beschrieben. Lass es säen.

Erledigt!


Modell Setter und Getter

Es gibt wahrscheinlich eine Vielzahl von Aktionen, die Sie häufig auslösen, wenn Sie ein Feld aus einer Datenbanktabelle festlegen oder abrufen. Wenn sich ein Benutzer beispielsweise anmeldet, sollten wir zur Einhaltung der bewährten Sicherheitsmethoden immer sein Kennwort kennzeichnen. Anstatt die Arbeit manuell auszuführen, aktualisieren wir stattdessen das User-Modell und geben an, dass es beim Festlegen eines Kennworts zuerst gehasht werden sollte.

Einfach! Jetzt müssen wir uns nie um diesen Teil des Puzzles kümmern, wenn wir einen neuen Benutzer registrieren. Natürlich ist auch die umgekehrte Option verfügbar, wenn Sie den Wert eines Felds bearbeiten müssen, bevor Sie ihn "abrufen" können.

Was ist, wenn wir einen Zeitstempel oder einen Namen festlegen müssen? Dies kann auch über das Modell erfolgen, wenn Sie dies wünschen.

Diese neue fullName() -Methode ist jetzt für unsere Benutzerinstanz verfügbar.


Gemeinschaft (Konferenz)

Vielleicht wichtiger als alles andere ist, dass Laravel in relativ kurzer Zeit eine blühende, evangelikale Community aufgebaut hat, die aus einigen der einflussreichsten Entwicklern der PHP-Community besteht.

Warum ist das wichtig? Einfach: Mit Evangelisation geht es sowohl um Bildung als auch um Beitrag. Die größte Hürde für ein neues Framework besteht darin, das Wort zu bekommen und den Leuten zu zeigen, wie man das Dang-Ding benutzt! Zum Glück zeichnet sich Laravel durch Dokumentation und Tutorials / Screencasts im Web aus - einschließlich eines vollständigen Kurses bei Ihnen!

Lernen Sie bei Tuts + Premium die Besonderheiten von Laravel kennen!

Die Wahrheit ist, dass wir die Oberfläche dessen, was in Laravel möglich ist, kaum zerkratzt haben. Wir müssen uns noch mit der Fehlerbehandlung von Laravel, der Integration von PHPUnit, dem bevorstehenden Laden (vor und nach dem Abrufen von Sammlungen) und vielem mehr befassen. Lesen Sie in der fantastischen Dokumentation nach, um tiefer in das Framework einzutauchen, und achten Sie auf die offizielle Version von Version 4!

Die beliebte Nettuts + Community bietet eine Reihe von Laravel-spezifischen Tutorials.

Wenn dieser Artikel der Anstoß für Ihre neu entdeckte Liebe zu PHP und Laravel war, werden Sie vielleicht an der ersten jährlichen Konferenz von Laracon (Konferenz) teilnehmen, die für Ende Februar 2013 in Washington DC geplant ist. Vielleicht sehen wir uns dort !

Die erste Laravel-Konferenz, Laracon, wird vom 22. bis 23. Februar 2013 in Washington D.C. stattfinden

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.