Was sind Laravel-Pakete?

Als PHP-Entwickler sind Sie möglicherweise an der Arbeit mit Frameworks interessiert. Frameworks versuchen, den Entwicklungsprozess zu vereinfachen, indem sie die gängigen Praktiken vereinfachen, die in der Mehrzahl der Entwicklung von Webprojekten wie Paketen, Modulen, Plug-Ins und sogar Komponenten verwendet werden (CakePHP)..

Möglicherweise haben Sie während des Entwicklungsprozesses das Gefühl, das Rad neu zu erfinden, z. B. beim Erstellen einer Authentifizierungs- oder Captcha-Anwendung. In diesem Fall müssen Sie ein Paket erstellen, das die App-Entwicklung vereinfacht und beschleunigt und vereinfacht.

Es gibt zwei Arten von Paketen. Einige sind Rahmen unabhängig (Stand-Alone) und die anderen sind für eine spezifischen Rahmen. Dieses Tutorial behandelt ausschließlich Laravel-Pakete.

Bevor Sie ein Paket erstellen, müssen Sie über Paketmanager Bescheid wissen. PEAR ist ein bekannter PHP-Paketmanager, der, obwohl verfügbar, nur selten verwendet wird. Warum? Sie zwangen Sie, Pakete systemweit zu installieren, anstatt sie projektbezogen zu installieren. Komponist wurde PEARs Nachfolger.

Was sind Laravel-Pakete??

Einer der Parameter für die Skalierung des Frameworks ist, wie der Entwickler nützliche Code-Pakete umverteilt. Dadurch können Entwickler Anwendungen in mehreren Paketen kleinerer Anwendungen zusammenfassen.

Tatsächlich bieten Pakete eine hervorragende Möglichkeit, verwandten Code zu gruppieren. Pakete sind den „Komponenten“ sehr ähnlich. Es ist wichtig zu wissen, dass der Laravel-Quellcode ein "Paket" ist, das Taylor Otwell das nennt DEFAULT_BUNDLE.

Ein großer Vorteil der Laravel-Pakete besteht darin, dass sie Zugriff auf alle Funktionen des Host-Programms für die Host-Anwendung bieten, einschließlich Routing, Migrationen, Tests, Ansichten und zahlreiche andere nützliche Funktionen. Ein weiterer wichtiger Vorteil eines Pakets ist das DRY-Prinzip (Don't Repeat Yourself). Durch das Erstellen eines Pakets für häufig verwendeten Code sparen Sie Ressourcen und verbessern die Leistung Ihrer Anwendung.

Lassen Sie uns nun einige nützliche Laravel-Pakete vorstellen. Pakete, die ich verwendet habe, umfassen:

  • Generatoren: Eines der Dinge, die mir an CakePHP gefallen haben, war die Bake-Funktion. Das ist das, was ich bisher in keinem anderen Rahmen gefunden habe.
  • Ardent: Sich selbst validierende Smart-Modelle für Eloquent ORM.
  • IDE-Helfer: Dieses Paket versucht, das Problem der automatischen Vervollständigung des Codes in PhpStorm zu beheben, indem eine Docblock-Helper-Datei erstellt wird, aus der die IDE Hinweise abrufen kann.
  • Sayakb: Es bringt Ihnen eine großartige Captcha-App.
  • Behat: Eine Lösung zum Testen Ihrer Anwendung mithilfe der BDD-Methodik.
  • Artdarek: Ein großartiger OAuth-Wrapper.
  • Mcamara: Einfache i18n-Lokalisierung für Ihre Laravel-App.

In Packalyst finden Sie möglicherweise die erforderliche Verpackungskapazität. Packalyst erstellt ein einfaches und soziales Paketregister für Laravel.

So bauen Sie Ihr eigenes Laravel-Paket

Erstellen Sie ein einfaches Authentifizierungspaket für Laravel 5.0. Dazu benötigen Sie zunächst eine composer.json Datei für Ihr neues Paket:

"name": "alireza / myauth", "description": "So erstellen Sie Ihr Laravel 5-Paket", "Lizenz": "MIT", "Autoren": ["name": "Alireza Rahmani khalili", "E-Mail ":" [email protected] "]," Mindeststabilität ":" dev "," erfordern ": " laravel / framework ":" ~ 5.0 "," autoload ": " psr-4 ": "Alireza \\ Authentication \\": "src /" 

Die Service Provider-Klasse ist einfach die Datei, die alles für das Paket richtig einrichtet. So sollte der Dienstanbieter an dieser Stelle aussehen, in src / MyAuthServiceProvider.php:

Namespace Alireza \ Authentication; Verwenden Sie Illuminate \ Support \ ServiceProvider. Klasse MyAuthServiceProvider erweitert ServiceProvider / ** * Gibt an, ob das Laden des Providers verzögert wird. * * @var bool * / protected $ defer = false; / ** * Bootstrap der Anwendungsereignisse. * * @return void * / public function boot ()  / ** * Registrieren Sie den Dienstanbieter. * * @return void * / public function register ()  / ** * Liefert die vom Provider bereitgestellten Dienste. * * @return array * / public Funktion liefert () return [];  

Fügen Sie den Dienstanbieter zu hinzu config / app.php:

"Alireza \ Authentication \ MyAuthServiceProvider :: class", 

Jetzt weiß Laravel von dem Paket. Sie fragen möglicherweise nach „Alias“ und warum ich es nicht zu meinem hinzufüge app.php. Ich persönlich füge in der register-Methode der Service Provider-Klasse einen Alias ​​hinzu, anstatt ihn manuell zur Laravel-Konfigurationsdatei hinzuzufügen. Ich werde später darauf eingehen. Erstellen Sie nun eine einfache PHP-Klasse namens MyAuth im src / MyAuth.php:

Namespace Alireza \ Authentication; Verwenden Sie Config, Request, Session, Hash; App \ Benutzer verwenden; Klasse MyAuth public $ redirect_login = '/ users / home'; public $ redirect_logout = '/ users / logout'; public $ login = '/ user / login'; geschützte $ data; public function __construct () if (Request :: isMethod ('post')) // Posteingaben abrufen $ this-> data = array ('username' => Input :: get ('username'), 'password' = > Eingabe :: get ('password'));  public function login ($ data = false) $ this-> data = $ data; if ($ this-> data &&! is_array ($ this-> data)) Umleitung zurückgeben ($ this-> login) -> mit ('message', 'Sorry, kein Array für die manuelle Anmeldung') -> send ( ); if ($ this-> data &&! Session :: has ('user')) $ result = User :: Where (['email' => $ this-> data ['username']]) -> zuerst ( ); if ($ result && Hash :: check ($ this-> data ['password'], $ result-> password)) Sitzung :: put ('user', $ result); return Umleitung ($ this-> redirect_login) -> with ('message', 'Welcome login erfolgreich abgeschlossen') -> send ();  Session :: flush (); Weiterleitung ($ this-> login) -> with ('message', 'Login fehlgeschlagen, falscher Benutzername oder Passwort') -> send ();  public function logout () Sitzung :: flush (); Weiterleitung umleiten ($ this-> login) -> with ('message', 'logout doneed') -> send ();  

Die Authentifizierungsklasse sollte mit dem IoC-Container von Laravel an den Dienstanbieter des Pakets gebunden werden. Erstellen Sie zuvor eine Facade-Klasse, die die Verwendung von Klassenmethoden zulässt, ohne dass eine neue Instanz erstellt werden muss. Außerdem müssen Sie die zuvor genannten Vorteile nutzen. So wie die MyAuth-Klasse das neue Verzeichnis erstellt hat Fassaden Erstellen Sie im Facades-Verzeichnis eine neue PHP-Klasse und benennen Sie sie src / MyAuthFacade.php:

Namespace Alireza \ Authentication; benutze Illuminate \ Support \ Facades \ Facade; Klasse MyAuthFacade erweitert Facade geschützte statische Funktion getFacadeAccessor () return 'MyAuth';  

Danach muss nur noch das Paket gebootet werden. Meines sieht aus wie:

 public function register () $ this-> app ['MyAuth'] = $ this-> app-> share (Funktion ($ app) return new MyAuth;); $ this-> app-> boot (function () $ loader = \ Illuminate \ Foundation \ AliasLoader :: getInstance (); $ loader-> alias ('MyAuth', 'Alireza \ Authentication \ MyAuthFacade'););  

Wie Sie sehen, habe ich die Myauth-Klasse an den IoC-Container gebunden. Jetzt ist es einfach, die MyAuth-Klasse zu verwenden:

MyAuth :: login (['username' => '[email protected]', 'password' => 'test']); 

Dies sollte die Nachricht generieren, Willkommenes Login erfolgreich. Auf Wunsch können Sie Ihr Paket jetzt in Packagist registrieren. Das MyAuth-Paket ist jetzt registriert und kann mit dem Composer-Befehl problemlos in Laravel eingefügt werden: Komponist benötigt "alireza / myauth".

Fazit

Wenn Sie nach einem Beispiel für ein beliebtes, ausgereiftes Laravel-Paket suchen, können Sie TerranetAdmin für Laravel besuchen.

Dies ist eine kurze Übersicht über die Erstellung eines Laravel 5-Pakets. Wie Sie sehen, ist die Erstellung des Pakets einfach und könnte ein wichtiges Werkzeug sein, um den Entwicklungsprozess zu vereinfachen und zu beschleunigen.