Care sunt pachetele Laravel?

În calitate de dezvoltator PHP, este posibil să fiți interesat să lucrați cu cadre. Cadrele de lucru încearcă să ușureze procesul de dezvoltare prin simplificarea practicilor comune utilizate în majoritatea proiectelor web în curs de dezvoltare, cum ar fi pachete, module, plug-in-uri și chiar componente (CakePHP).

Poate că în timpul procesului de dezvoltare, simți că reinventați roata, cum ar fi atunci când creați o aplicație de autentificare sau Captcha. În acest caz, trebuie să creați un pachet care va simplifica și va face dezvoltarea aplicației mai rapidă și mai ușoară.

Există două tipuri de pachete; unele sunt cadru independent (stand-alone), iar celelalte sunt pentru a cadru specific. Acest tutorial va acoperi exclusiv pachetele Laravel.

Înainte de a crea un pachet, trebuie să știți despre managerii de pachete. PEAR este un bine-cunoscut manager de pachete PHP care, deși disponibil, este rar folosit. De ce? Te-a forțat să instalezi pachete la nivel de sistem, nu pe bază de proiect. Compozitorul a devenit succesorul PEAR.

Care sunt pachetele Laravel??

Unul dintre parametrii pentru scalarea puterii cadru este modul în care dezvoltatorul redistribuie pachete utile de cod. Acest lucru permite dezvoltatorilor să rezume aplicațiile în mai multe pachete de aplicații mai mici.

Într-adevăr, pachetele oferă o modalitate foarte bună de a grupa codul asociat. Pachetele sunt foarte asemănătoare cu "Componentele". Este important să rețineți că codul sursă Laravel este un "pachet", pe care Taylor Otwell îl numește DEFAULT_BUNDLE.

Un mare avantaj al pachetelor Laravel este că acestea permit accesul la toate caracteristicile oferite cadrului aplicației gazdă, inclusiv rutare, migrații, teste, vizualizări și multe alte caracteristici utile. Un alt avantaj important al unui pachet este principiul DRY (Do not Repeat Yourself). Prin crearea unui pachet de cod pe care îl utilizați frecvent, economisiți resurse și îmbunătățiți performanța aplicației.

Acum, să prezentăm câteva pachete utile Laravel. Pachetele pe care le-am folosit includ:

  • generatoare: Unul din lucrurile pe care le-am plăcut despre CakePHP a fost caracteristica Bake. Acesta este cel mai apropiat lucru pe care l-am găsit în orice alt cadru.
  • înflăcărat: Modele inteligente cu auto-validare pentru ORM elocvent.
  • IDE ajutor: Acest pachet urmărește să remedieze problema de auto-finalizare a codului în PhpStorm prin crearea unui fișier helper docblock din care IDE poate lua indiciile.
  • Sayakb: Vă aduce o aplicație capsună mare.
  • Behat: O soluție pentru testarea aplicației folosind metoda BDD.
  • Artdarek: Un mare wrap OAuth.
  • Mcamara: Localizare ușoară i18n pentru aplicația dvs. Laravel.

Puteți găsi capacitatea de ambalare de care aveți nevoie în ambalaj. Packalyst creează un registru de pachete simplu și social pentru Laravel.

Cum să vă construiți propriul pachet Laravel

Creați un pachet simplu de autentificare pentru Laravel 5.0. Pentru a face acest lucru, în primul rând aveți nevoie de a composer.json fișier pentru noul pachet:

"nume": "alireza / myauth", "descriere": "Cum creați pachetul dvs. laravel 5", "licență": "MIT" ":" "" "5.0", "autoload": "psr-4": "[email protected]"] "Alireza \\ Autentificare \\": "src /" 

Clasa furnizorului de servicii este pur și simplu fișierul care stabilește totul corect pentru pachet. Iată ce Ar trebui să arate în acest moment Furnizorul de servicii, în src / MyAuthServiceProvider.php:

namespace Alireza \ Autentificare; utilizați Iluminare \ Suport \ ServiceProvider; clasa MyAuthServiceProvider extinde ServiceProvider / ** * Indică dacă încărcarea furnizorului este amânată. * * @var bool * / protejat $ defer = false; / ** * Bootstrap evenimentele aplicației. * * @return void * / boot funcțional public ()  / ** * Înregistrați furnizorul de servicii. * * @return void * / registru funcțional public ()  / ** * Obțineți serviciile furnizate de furnizor. * * @return array * / funcția publică oferă () return [];  

Adăugați furnizorul de servicii la config / app.php:

'Alireza \ Authentication \ MyAuthServiceProvider :: clasa', 

Laravel este conștient de acest pachet. Puteți întreba despre "alias" și de ce nu-l adaug pe mine app.php. Personal, adaug un alias în metoda de înregistrare a clasei furnizorului de servicii, în loc să îl adăugăm manual la fișierul de configurare Laravel. Mă voi adresa mai târziu. Acum creați o simplă clasă PHP numită MyAuth în src / MyAuth.php:

namespace Alireza \ Autentificare; utilizați Config, Solicitare, Sesiune, Hash; utilizați App \ User; Clasa MyAuth public $ redirect_login = '/ users / home'; public $ redirect_logout = '/ utilizatori / deconectare'; public $ login = '/ utilizator / login'; date protejate $; funcția publică __construct () if (Cerere :: isMethod ('post')) // Obțineți intrări post $ this-> data = array ('username' => > Intrare :: get ('parola'));  funcția de conectare publică ($ data = false) $ this-> data = $ data; dacă ($ this-> data &&! is_array ($ this-> data)) returnează redirecționarea ($ this-> login) ); dacă ($ this-> data &&! Session :: are ('user')) $ rezultat = Utilizator :: unde (['email' => $ this-> data ['username']] ); dacă ($ rezultat && Hash :: verificați ($ this-> data ['parola'], $ result-> password)) Session :: put ('user', $ result); returnează Redirecționarea ($ this-> redirect_login) -> cu ('message', 'Welcome log-in a reușit') -> send ();  Session :: flush (); redirecționați return ($ this-> login) -> cu ('message', 'Login Failed, nume de utilizator greșit sau parolă') -> send ();  logout funcția publică () Session :: flush (); returnează redirecționarea ($ this-> login) -> cu ('message', 'logout succeeded') -> send ();  

Clasa de autentificare ar trebui să se leagă cu containerul IoC Laravel de furnizorul de servicii al pachetului. Înainte de aceasta, creați o clasă de fațadă care va permite utilizarea metodelor de clasă fără a fi nevoie să creați o instanță nouă, precum și alte beneficii care au fost indicate mai devreme. Asa cum clasa MyAuth a creat noul director faţade în directorul Facades, creați o nouă clasă PHP și denumiți-o src / MyAuthFacade.php:

namespace Alireza \ Autentificare; Foloseste iluminare \ Suport \ Fațade \ Fațadă; clasa MyAuthFacade extinde Facade funcția statică protejată getFacadeAccessor () return 'MyAuth';  

După aceasta, singurul lucru rămas este să bootstrați pachetul. Mina arată ca:

 registrul funcțiilor publice () $ this-> app ['MyAuth'] = $ this-> app-> share (funcția ($ app) returnează noua MyAuth;); $ this-> app-> boot (functie () $ loader = \ Illuminate \ Fundatia \ AliasLoader :: getInstance (); $ loader-> alias ('MyAuth', 'Alireza \ Authentication \ MyAuthFacade');  

După cum puteți vedea, am legat clasa Myauth cu containerul IoC. Acum este ușor de folosit clasa MyAuth:

MyAuth :: autentificare ([ 'username' => '[email protected]', 'parola' => 'test']); 

Aceasta ar trebui să genereze mesajul, Bun venit la conectare a reușit. Dacă doriți, puteți să vă înregistrați pachetul în ambalator. Pachetul MyAuth a fost înregistrat și poate fi ușor inclus în Laravel prin comanda compozitorului: compozitorul cere "alireza / myauth".

Concluzie

Dacă sunteți în căutarea unui exemplu de pachet popular, matur Laravel, puteți verifica TerranetAdmin pentru Laravel.

Aceasta a fost o scurtă trecere în revistă a modului de a crea un pachet Laravel 5. După cum puteți vedea, crearea pachetului este ușoară și ar putea fi un instrument important pentru simplificarea și accelerarea procesului de dezvoltare.

Cod