So erstellen Sie einen Laravel-Helfer

Zu Beginn möchte ich lieber die offizielle Website von Laravel über Helfer sprechen lassen.

Laravel enthält eine Vielzahl globaler "Helper" -PP-Funktionen. Viele dieser Funktionen werden vom Framework selbst verwendet. Sie können sie jedoch in Ihren eigenen Anwendungen verwenden, wenn Sie dies für bequem halten.

Im Grunde sind Helfer in Laravel integrierte Dienstfunktionen, die Sie von überall in Ihrer Anwendung aufrufen können. Wenn sie nicht vom Core-Framework bereitgestellt worden wären, hätten Sie möglicherweise Ihre eigenen Hilfsklassen entwickelt.

Obwohl der Kern bereits eine Vielzahl von Helfern bereitstellt, besteht immer die Möglichkeit, dass Sie Ihre eigenen benötigen und eine entwickeln möchten, sodass Sie nicht hier und dort denselben Code wiederholen müssen, um eine bessere Wartbarkeit zu erreichen. In diesem Lernprogramm erfahren Sie, wie Sie einen benutzerdefinierten Laravel-Helfer erstellen.

Helfer in Laravel

Wie bereits erwähnt, stehen im Kern des Laravel-Frameworks viele Helfer zur Verfügung. Sie werden nach ihrer Funktionalität gruppiert. Hier ist eine Liste von Helfergruppen.

Arrays

Helfer in dieser Gruppe bieten Funktionen zum Bearbeiten von Array-Elementen. Meistens befinden Sie sich in der Situation, in der Sie verschiedene Operationen an Array-Elementen durchführen möchten. An diesem Ort sollten Sie zuerst nachsehen, ob das Gesuchte, das Sie suchen, bereits vorhanden ist.

Pfade

Ich finde Helfer in dieser Kategorie am nützlichsten. Sie geben den vollständig qualifizierten Pfad verschiedener Verzeichnisse wie App, Speicher, Konfiguration und dergleichen zurück. Ich wette, Sie verwenden die meisten dieser Helfer bereits in Ihrer Laravel-Anwendung.

Zeichenketten

Die String-Manipulation ist in Ihrer täglichen Anwendungsentwicklung unumgänglich. Zwar gibt es viele String-Manipulationsfunktionen, die von PHP selbst zur Verfügung gestellt werden. In diesem Abschnitt finden Sie jedoch einige weitere nützliche Extras.

URLs

In dieser Kategorie gibt es sehr wenige, die jedoch in der gesamten Anwendung verwendet werden. Sie werden zum Generieren von URLs für Routen, Assets und Formularaktionen verwendet.

Verschiedenes

Diese Kategorie enthält Helfer, die eine Vielzahl von Funktionen bereitstellen, die von der Protokollierung bis zum Debugging und vielen anderen reichen.

Für eine vollständige Referenz der Laravel-Helfer gibt es keinen besseren Ort als die offizielle Dokumentation.

Erstellen Sie Ihren ersten benutzerdefinierten Helfer

Jetzt haben Sie ein grundlegendes Verständnis von Laravel-Helfern und wofür sie verwendet werden. In diesem Abschnitt erläutere ich Ihnen, wie Sie Ihren eigenen benutzerdefinierten Helfer erstellen können, der global in Ihrer Laravel-Anwendung verwendet werden kann.

Um die Dinge einfach und verständlich zu halten, ist dies ein ziemlich grundlegender Helfer, der eine Benutzer-ID annimmt und einen Benutzernamen als Antwort zurückgibt. Das klingt natürlich nicht sonderlich, aber ich glaube, es reicht aus, um das Konzept zu demonstrieren, und Sie könnten es immer erweitern, um Ihre komplexen Anforderungen zu erfüllen.

Ich gehe davon aus, dass Sie eine Benutzertabelle in Ihrer Datenbank haben und diese mindestens zwei Felder enthält: Benutzer-ID und Benutzername.

Das Skelett eines Laravel-Helpers

Bevor wir mit dem Erstellen der Dateien fortfahren, werfen wir einen Blick auf die Dateien, die wir im Rest des Artikels erstellen werden.

  • app / Helpers / Envato / User.php: Es ist unsere Helper-Datei, die die Logik unseres Helpers enthält.
  • app / Providers / EnvatoServiceProvider.php: Es handelt sich um eine benutzerdefinierte Diensteanbieterdatei, in die unsere benutzerdefinierte Hilfedatei geladen wird.
  • config / app.phpIn dieser Datei werden wir unseren benutzerdefinierten Diensteanbieter deklarieren. Dies hilft uns auch, einen Alias ​​für unseren Helfer zu definieren, damit wir nicht den vollständig qualifizierten Klassennamen unseres Helpers verwenden müssen.
  • routen / web.php: Eine ziemlich standardisierte Laravel-Routendatei, in der wir unseren Helfer testen.

Hilfedateien erstellen

Obwohl Sie Ihre Hilfedateien an einer beliebigen Stelle in Ihrer Anwendung ablegen könnten, ist der intuitivere und standardisiertere Weg der Ansicht, dass die Hilfedateien unter Ihrem PC liegen sollten App Verzeichnis.

Also mach weiter und erstelle eine Helfer / Envato Verzeichnis unter App und erstellen Sie ein User.php Datei mit folgendem Inhalt. Natürlich können Sie es direkt unter der App oder App / Helfer Durch die Bereitstellung dieses zusätzlichen Niveaus können wir unsere Helfer jedoch gut in Form bringen, insbesondere wenn Sie viele davon haben.

where ('userid', $ user_id) -> first (); return (isset ($ Benutzer-> Benutzername)? $ Benutzer-> Benutzername: ");

Die Datei beginnt mit einer ziemlich standardmäßigen Namespace-Deklaration:

Namespace App \ Helpers \ Envato;

Der Zweck unseres benutzerdefinierten Helpers besteht darin, einen Benutzernamen basierend auf einer Benutzer-ID abzurufen. Daher müssen wir mit der Datenbank interagieren und das zwingt uns, DB Facade einzubeziehen.

benutze Illuminate \ Support \ Facades \ DB;

Für diejenigen, die mit Laravel Fassaden nicht vertraut sind, ist dies eine weitere bequeme Möglichkeit, auf die Objekte in Service-Containern zuzugreifen. Alternativ können Sie die Abhängigkeitsinjektion verwendet haben.

Weiter geht es mit der konkreten Umsetzung unserer Helfer. Wie Sie sehen, gibt es eine statische Methode, die die Logik zum Abrufen eines Benutzernamens basierend auf einer Benutzer-ID definiert.

$ user = DB :: table ('users') -> where ('userid', $ user_id) -> first ();

Das $ Benutzer Objekt enthält den Datenbankdatensatz mit der entsprechenden Benutzer-ID. Schließlich gibt die Methode den Benutzernamen als Antwort in der folgenden Anweisung zurück.

return (isset ($ Benutzer-> Benutzername)? $ Benutzer-> Benutzername: ");

Das ist es, was unsere Helfer-Datei angeht.

Jetzt haben wir unsere Hilfedatei erstellt, aber die Frage ist, wie Sie sie verwenden werden. Zwei schnelle Lösungen kommen mir in den Sinn:

  • Sie können unseren Helper-Dateinamen in die composer.json, damit es automatisch geladen wird. Dann können Sie gleich die statische Methode unserer Hilfsklasse aufrufen.
  • Sie können einen Laravel-Dienstanbieter erstellen, mit dem Sie Ihre benutzerdefinierte Helper-Datei registrieren können, sodass das Laravel-Framework diese zusammen mit anderen Abhängigkeiten lädt. Registrieren Sie diesen Dienstanbieter in der Laravel-Konfiguration und erstellen Sie einen Alias, um Ihren Helfer zu verwenden.

Natürlich ist die erste ziemlich schnell und einfach zu implementieren, und Sie sind vielleicht versucht, dies zu tun, aber ich würde eher die letztere vorschlagen, da sie eher wie ein Handwerker aussieht und wartungsfreundlicher ist.

Wechseln Sie zur Befehlszeile und führen Sie den folgenden Befehl in Ihrem Anwendungsstamm aus, um einen neuen Dienstanbieter zu erstellen.

$ php Handwerker make: Anbieter EnvatoServiceProvider Anbieter erfolgreich erstellt.

Sie sollten die Nachricht sehen, die bestätigt, dass sie erfolgreich unter erstellt wurde App / Anbieter Verzeichnis.

Öffnen Sie diese Datei und Sie sollten bereits zwei Methoden sehen. Das wichtigste in diesem Artikel ist das registrieren Methode. Ja, im Moment ist es leer. Fangen wir also ein paar Sachen ein, um es nützlicher zu machen.

public function register () required_once app_path (). "/Helpers/Envato/User.php"; 

Die Registermethode wird verwendet, um Ihre Abhängigkeiten zu registrieren, und das haben wir genau gemacht. Wir haben unsere benutzerdefinierte Hilfedatei beigelegt.

Hier ist wie das app / Providers / EnvatoServiceProvider.php Die Datei sollte nach Änderungen suchen.

Es ist also alles ziemlich gut. Wir haben unseren individuellen Helfer und Dienstleister auf dem Tisch.

Als Nächstes müssen wir Laravel über unseren Dienstanbieter informieren, damit dieser ihn beim Bootstrapping laden kann. Lass uns die öffnen config / app.php und fügen Sie den folgenden Eintrag in der Anbieter Array am Ende.

App \ Providers \ EnvatoServiceProvider :: Klasse,

Um unseren Helfer bequem zu verwenden, können wir auch einen Alias ​​erstellen. Lassen Sie uns das tun, indem Sie den folgenden Eintrag in der Aliase Array am Ende in derselben Datei.

'EnvatoUser' => App \ Helpers \ Envato \ User :: class,

Durch die Definition dieses Eintrags können wir unseren Helfer mit dem Aufruf von aufrufen EnvatoUser Stichwort. Ziemlich bequem, oder? Hier finden Sie die vollständige Beschreibung config / app.php Datei.

 'Laravel', / * | --------------------------------------- ------------------------------- | Anwendungsumgebung | ------------------------------------------- --------------------------- | | Dieser Wert bestimmt die "Umgebung", in der sich Ihre Anwendung derzeit befindet running in. Dies bestimmt möglicherweise, wie Sie verschiedene | konfigurieren möchten Dienste, die Ihre Anwendung nutzt. Legen Sie dies in Ihrer ".env" -Datei fest. | * / 'env' => env ('APP_ENV', 'production'), / * | ------------------------- ----------------------------------------- | Anwendungs-Debug-Modus | ------------------------------------------ ---------------------------- | | Wenn sich Ihre Anwendung im Debug-Modus befindet, werden ausführliche Fehlermeldungen mit | angezeigt Stack-Traces werden bei jedem Fehler angezeigt, der in Ihrem | auftritt Anwendung. Wenn deaktiviert, wird eine einfache generische Fehlerseite angezeigt. | * / 'debug' => env ('APP_DEBUG', false), / * | --------------------------- --------------------------------------- | Anwendungs-URL | ------------------------------------------- --------------------------- | | Diese URL wird von der Konsole verwendet, um URLs bei Verwendung von | ordnungsgemäß zu generieren das Artisan-Befehlszeilentool. Sie sollten dies auf die Wurzel von | setzen Ihre Anwendung, damit sie beim Ausführen von Artisan-Aufgaben verwendet wird. | * / 'url' => env ('APP_URL', 'http: // localhost'), / * | ------------------------- --------------------------------------------- | Zeitzone der Anwendung | ------------------------------------------- --------------------------- | | Hier können Sie die Standard-Zeitzone für Ihre Anwendung angeben, die | wird von den PHP-Datums- und Datum-Uhrzeit-Funktionen verwendet. Wir sind gegangen | voraus und setzen Sie diese Option auf einen vernünftigen Standard. | * / 'timezone' => 'UTC', / * | ---------------------------------- -------------------------------------- Anwendungsgebietsschema-Konfiguration | ------------------------------------------ ---------------------------- | | Das Anwendungsgebietsschema bestimmt das Standardgebietsschema, das verwendet werden soll vom Übersetzungsdienstleister. Sie können diesen Wert frei einstellen zu einem beliebigen Gebietsschema, das von der Anwendung unterstützt wird. | * / 'locale' => 'de', / * | ---------------------------------- -------------------------------------- Anwendungsfallback-Gebietsschema | ------------------------------------------ ---------------------------- | | Das Fallback-Gebietsschema bestimmt das zu verwendende Gebietsschema, wenn das aktuelle | ist nicht verfügbar. Sie können den Wert ändern, um einem von | zu entsprechen die Sprachordner, die über Ihre Anwendung bereitgestellt werden. | * / 'fallback_locale' => 'de', / * | -------------------------------- -------------------------------------- Verschlüsselungsschlüssel | ------------------------------------------- --------------------------- | | Dieser Schlüssel wird vom Illuminate-Verschlüsselungsdienst verwendet und sollte | gesetzt werden zu einer zufälligen 32-Zeichen-Zeichenfolge, andernfalls werden diese verschlüsselten Zeichenfolgen | wird nicht sicher sein. Bitte machen Sie dies, bevor Sie eine Anwendung bereitstellen! | * / 'key' => env ('APP_KEY'), 'cipher' => 'AES-256-CBC', / * | -------------------- -------------------------------------------------- ---- | Protokollierungskonfiguration | ------------------------------------------- --------------------------- | | Hier können Sie die Protokolleinstellungen für Ihre Anwendung konfigurieren. Aus | In der Box verwendet Laravel die Log-Bibliothek von Monolog. Dies gibt | Sie können eine Vielzahl leistungsstarker Protokoll-Handler / Formatierer verwenden. | | Verfügbare Einstellungen: "single", "daily", "syslog", "errorlog" | * / 'log' => env ('APP_LOG', 'single'), 'log_level' => env ('APP_LOG_LEVEL', 'debug'), / * | ------------- -------------------------------------------------- ----------- | Automatisch geladene Dienstanbieter | ------------------------------------------ ---------------------------- | | Die hier aufgeführten Dienstanbieter werden automatisch auf die | geladen Anfrage an Ihre Bewerbung. Fühlen Sie sich frei, | Ihre eigenen Dienstleistungen hinzuzufügen dieses Array, um Ihren Anwendungen erweiterte Funktionalität zu gewähren. | * / 'provider' => [/ * * Laravel Framework Service Provider… * / Illuminate \ Auth \ AuthServiceProvider :: Klasse, Illuminate \ Broadcasting \ BroadcastServiceProvider :: Klasse, Illuminate \ Bus \ BusServiceProvider :: Klasse, Illuminate \ Cache \ CacheServiceProvider :: class, Illuminate \ Foundation \ Providers \ ConsoleSupportServiceProvider :: class, Illuminate \ Cookie \ CookieServiceProvider :: class, Illuminate \ Datenbank \ DatabaseServiceProvider :: class, Illuminate \ Encryption \ EncryptionServiceProvider :: Klasse, Illuminate \ Filesystem \ FilesystemServiceProvider :: class Illuminate \ Foundation \ Providers \ FoundationServiceProvider :: Klasse, Illuminate \ Hashing \ HashServiceProvider :: Klasse, Illuminate \ Mail \ MailServiceProvider :: Klasse, Illuminate \ Benachrichtigungen \ NotificationServiceProvider :: Klasse, Illuminate \ Pagination \ PaginationServiceProvider :: Klasse, Illuminate \ Pipeline \ PipelineServiceProvider :: Klasse, Illuminate \ Queue \ QueueServiceProvider :: Klasse, Illuminate \ Redis \ RedisServiceProvider :: Klasse, Illuminate \ Auth \ Passwords \ PasswordResetServi ceProvider :: Klasse, Illuminate \ Session \ SessionServiceProvider :: Klasse, Illuminate \ Translation \ TranslationServiceProvider :: Klasse, Illuminate \ Validation \ ValidationServiceProvider :: Klasse, Illuminate \ View \ ViewServiceProvider :: Klasse, / * * Paketdienstanbieter… * / Laravel \ Tinker \ TinkerServiceProvider :: class, / * * Anwendungsdienstanbieter… * / App \ Providers \ AppServiceProvider :: Klasse, App \ Providers \ AuthServiceProvider :: Klasse, // App \ Providers \ BroadcastServiceProvider :: Klasse, App \ Providers \ EventServiceProvider :: class, App \ Providers \ RouteServiceProvider :: class, App \ Providers \ EnvatoServiceProvider :: class,], / * | --------------------- -------------------------------------------------- --- | Klassen-Aliase | ------------------------------------------- --------------------------- | | Dieses Array von Klassenaliasen wird registriert, wenn diese Anwendung | ist gestartet. Sie können jedoch beliebig viele registrieren, wie Sie möchten Die Aliase werden "faul" geladen, sodass sie die Leistung nicht beeinträchtigen. | * / 'aliases' => ['App' => Illuminate \ Support \ Facades \ App :: class, 'Artisan' => Illuminate \ Support \ Facades \ Artisan :: class, 'Auth' => Illuminate \ Support \ Facades \ Auth :: class, 'Blade' => Illuminate \ Support \ Facades \ Blade :: class, 'Broadcast' => Illuminate \ Support \ Facades \ Broadcast :: class, 'Bus' => Illuminate \ Support \ Facades \ Bus :: class, 'Cache' => Illuminate \ Support \ Facades \ Cache :: class, 'Config' => Illuminate \ Support \ Facades \ Config :: Klasse, 'Cookie' => Illuminate \ Support \ Facades \ Cookie :: Klasse, 'Crypt' => Illuminate \ Support \ Facades \ Crypt :: Klasse, 'DB' => Illuminate \ Support \ Facades \ DB :: Klasse, 'Eloquent' => Illuminate \ Database \ Eloquent \ Model :: class, 'Event' => Illuminate \ Support \ Facades \ Event :: class, 'File' => Illuminate \ Support \ Facades \ File :: class, 'Gate' => Illuminate \ Support \ Facades \ Gate :: class, 'Hash '=> Illuminate \ Support \ Facades \ Hash :: Klasse,' Lang '=> Illuminate \ Support \ Facades \ Lang :: Klasse,' Log '=> Illuminate \ Support \ Facades \ Log :: Klasse,' Mail '= > Illuminate \ Support \ Facades \ Mail :: class, 'No tification '=> Illuminate \ Support \ Facades \ Benachrichtigung :: Klasse,' Passwort '=> Illuminate \ Support \ Facades \ Passwort :: Klasse,' Warteschlange '=> Illuminate \ Support \ Facades \ Queue :: Klasse,' Weiterleitung ' => Illuminate \ Support \ Facades \ Umleitung :: Klasse, 'Redis' => Illuminate \ Support \ Facades \ Redis :: Klasse, 'Request' => Illuminate \ Support \ Facades \ Request :: Klasse, 'Response' => Illuminate \ Support \ Facades \ Response :: Klasse, 'Route' => Illuminate \ Support \ Facades \ Route :: Klasse, 'Schema' => Illuminate \ Support \ Facades \ Schema :: Klasse, 'Sitzung' => Illuminate \ Support \ Facades \ Session :: class, 'Storage' => Illuminate \ Support \ Facades \ Storage :: class, 'URL' => Illuminate \ Support \ Facades \ URL :: class, 'Validator' => Illuminate \ Support \ Facades \ Validator :: class, 'View' => Illuminate \ Support \ Facades \ View :: class, 'EnvatoUser' => App \ Helpers \ Envato \ User :: class,],];

Wir sind fast da! Wir haben all die harte Arbeit geleistet, um hierher zu kommen, und jetzt können wir die Vorteile unseres maßgeschneiderten Helpers nutzen.

Ihr erster Custom-Helfer in Aktion

Um die Dinge einfach und unkompliziert zu halten, definieren wir eine grundlegende Laravel-Route und rufen von dort aus unseren Helfer an!

Gehen Sie voran und erstellen Sie eine routen / web.php Datei mit folgendem Inhalt.

Braucht das überhaupt eine Erklärung? Wir haben gerade den benutzerdefinierten Helfer mit der Abkürzung gerufen EnvatoUser :: get_username, und es sollte den Benutzernamen zurückgeben.

Natürlich können Sie unseren Helfer von überall in der Anwendung anrufen, sei es ein Controller oder eine Ansicht.

Damit ist unsere Geschichte für heute beendet.

Fazit

Helfer in Laravel sind wirklich eine leistungsstarke Funktion, und ich bin mir sicher, dass Sie das als Entwickler gerne erweitern würden. Und das war das Thema von heute - wir haben uns die Grundlagen der Laravel-Helper-Dateistruktur angesehen und einen nützlichen benutzerdefinierten Helfer erstellt.

Ich hoffe, Ihnen hat der Artikel gefallen und er hilft Ihnen dabei, Ihre eigenen individuellen Helfer bei der täglichen Laravel-Anwendungsentwicklung zu erstellen.

Zögern Sie nicht, Ihre Kommentare und Fragen in den untenstehenden Feed zu schreiben. Ich fange auch Kommentare zu meinem Twitter ein und beantworte sie so schnell ich kann!