Come sviluppatore PHP, potresti essere interessato a lavorare con i framework. I framework cercano di semplificare il processo di sviluppo semplificando le pratiche comuni utilizzate nella maggior parte dei progetti Web in via di sviluppo come pacchetti, moduli, plug-in e persino componenti (CakePHP).
Forse durante il processo di sviluppo, senti di reinventare la ruota, come quando crei un'applicazione di autenticazione o Captcha. In questo caso, è necessario creare un pacchetto che semplifichi e renda più veloce e più semplice lo sviluppo dell'app.
Esistono due tipi di pacchetti; alcuni sono quadri indipendente (stand-alone) e gli altri sono per a quadro specifico. Questo tutorial coprirà esclusivamente i pacchetti Laravel.
Prima di creare un pacchetto è necessario conoscere i gestori di pacchetti. PEAR è un noto gestore di pacchetti PHP che, sebbene disponibile, viene usato raramente. Perché? Ti ha costretto a installare i pacchetti a livello di sistema, piuttosto che su base progetto per progetto. Il compositore divenne il successore di PEAR.
Uno dei parametri per ridimensionare la potenza del framework è il modo in cui lo sviluppatore ridistribuisce pacchetti utili di codice. Ciò consente agli sviluppatori di riepilogare le applicazioni in diversi pacchetti di applicazioni più piccole.
In effetti, i pacchetti offrono un ottimo modo per raggruppare il codice correlato. I pacchetti sono molto simili a "Componenti". È importante notare che il codice sorgente di Laravel è un "pacchetto", che Taylor Otwell chiama il DEFAULT_BUNDLE
.
Un grande vantaggio dei pacchetti Laravel è che consentono l'accesso a tutte le funzionalità offerte dal framework all'applicazione host, inclusi il routing, le migrazioni, i test, le visualizzazioni e numerose altre utili funzionalità. Un altro importante vantaggio di un pacchetto è il principio DRY (Do not Repeat Yourself). Creando un pacchetto per il codice che usi frequentemente, risparmi risorse e migliora le prestazioni dell'applicazione.
Ora introduciamo alcuni utili pacchetti di Laravel. I pacchetti che ho usato includono:
Potresti trovare la capacità di confezionamento di cui hai bisogno in packalyst. Packalyst crea un registro di pacchetti semplici e social per Laravel.
Crea un semplice pacchetto di autenticazione per Laravel 5.0. Per fare questo, prima di tutto hai bisogno di a composer.json
file per il tuo nuovo pacchetto:
"nome": "alireza / myauth", "descrizione": "Come creare il tuo pacchetto laravel 5", "licenza": "MIT", "autori": ["nome": "Alireza Rahmani khalili", "email ":" [email protected] "]," minimum-stability ":" dev "," require ": " laravel / framework ":" ~ 5.0 "," autoload ": " psr-4 ": "Alireza \\ Authentication \\": "src /"
La classe Service Provider è semplicemente il file che imposta tutto correttamente per il pacchetto. Ecco come dovrebbe apparire il fornitore di servizi a questo punto, in src / MyAuthServiceProvider.php
:
namespace Alireza \ Authentication; utilizzare Illuminate \ Support \ ServiceProvider; classe MyAuthServiceProvider estende ServiceProvider / ** * Indica se il caricamento del provider è differito. * * @var bool * / protected $ defer = false; / ** * Bootstrap degli eventi dell'applicazione. * * @return void * / public function boot () / ** * Registrare il fornitore di servizi. * * @return void * / public function register () / ** * Ottieni i servizi forniti dal provider. * * @return array * / public function fornisce () return [];
Aggiungi il fornitore di servizi a config / app.php
:
'Alireza \ Authentication \ MyAuthServiceProvider :: class',
Ora Laravel è a conoscenza del pacchetto. Puoi chiedere "alias" e perché non lo aggiungo al mio app.php
. Personalmente, aggiungo l'alias nel metodo di registrazione della classe del fornitore di servizi invece di aggiungerlo manualmente al file di configurazione di Laravel. Tratterò questo più tardi. Ora crea una semplice classe PHP chiamata MyAuth
nel src / MyAuth.php
:
namespace Alireza \ Authentication; usa Config, Request, Session, Hash; utilizzare App \ Utente; Classe MyAuth public $ redirect_login = '/ users / home'; public $ redirect_logout = '/ users / logout'; public $ login = '/ user / login'; dati $ protetti; funzione pubblica __construct () if (Request :: isMethod ('post')) // Ottieni input input $ this-> data = array ('username' => Input :: get ('username'), 'password' = > Input :: get ('password')); login funzione pubblica ($ data = false) $ this-> data = $ data; se ($ this-> data &&! is_array ($ this-> data)) restituisce il reindirizzamento ($ this-> login) -> con ('message', 'sorry no array to log-in manual') -> send ( ); if ($ this-> data &&! Session :: has ('user')) $ result = User :: Where (['email' => $ this-> data ['username']]) -> primo ( ); if ($ result && Hash :: check ($ this-> data ['password'], $ result-> password)) Session :: put ('user', $ result); return Redirect ($ this-> redirect_login) -> con ('message', 'Welcome log-in succeeded') -> send (); Session :: flush (); return redirect ($ this-> login) -> con ('message', 'Login fallito, username o password errati') -> send (); public function logout () Session :: flush (); return redirect ($ this-> login) -> con ('message', 'logout succeeded') -> send ();
La classe di autenticazione dovrebbe collegarsi con il contenitore IoC di Laravel al fornitore di servizi del pacchetto. Prima di ciò, creare una classe Facade che consenta l'uso di metodi di classe senza la necessità di creare una nuova istanza, nonché altri vantaggi indicati in precedenza. Proprio come la classe MyAuth ha creato la nuova directory facciate
nella directory Facades, creare una nuova classe PHP e denominarla src / MyAuthFacade.php
:
namespace Alireza \ Authentication; usa Illuminate \ Support \ Facciate \ Facciate; class MyAuthFacade estende Facade funzione statica protetta getFacadeAccessor () return 'MyAuth';
Dopo questo, l'unica cosa che rimane è avviare il pacchetto. Il mio sembra:
registro delle funzioni pubbliche () $ this-> app ['MyAuth'] = $ this-> app-> share (function ($ app) return new MyAuth;); $ this-> app-> booting (function () $ loader = \ Illuminate \ Foundation \ AliasLoader :: getInstance (); $ loader-> alias ('MyAuth', 'Alireza \ Authentication \ MyAuthFacade'););
Come puoi vedere, ho associato la classe Myauth al contenitore IoC. Ora è facile usare la classe MyAuth:
MyAuth :: login ([ 'username' => '[email protected]', 'password' => 'test']);
Questo dovrebbe generare il messaggio, Accesso di benvenuto riuscito.
Se lo si desidera, è ora possibile registrare il pacchetto in Packagist. Il pacchetto MyAuth è stato registrato e può essere facilmente inserito in Laravel tramite il comando compositore: il compositore richiede "alireza / myauth"
.
Se stai cercando un esempio di un famoso pacchetto Laravel maturo, puoi consultare TerranetAdmin per Laravel.
Questa era una breve panoramica su come creare un pacchetto Laravel 5. Come puoi vedere, creare il pacchetto è facile e potrebbe essere uno strumento importante per semplificare e accelerare il processo di sviluppo.