Comunitatea PHP a fost recent binecuvântată cu o nouă lansare a unuia dintre cadrele sale cele mai iubite, Laravel. Versiunea 5.0.1 este o versiune majoră, astfel încât nu numai că sunt disponibile câteva noi caracteristici noi, dar și bazele arhitecturale ale cadrului au fost, de asemenea, modificate într-o oarecare măsură. Așadar, fără nici un alt efort, mă voi îndrepta chiar în cadru și vă voi arăta toate lucrurile bune pe care le poate oferi cea mai recentă versiune.
Structura folderului unui proiect Laravel a trecut printr-o revizuire majoră. Laravel 5 implementează standardul de autoloading PSR-4, ceea ce înseamnă că toate clasele dvs. sunt complet numite. Spațiul de nume implicit pentru aplicația dvs. web este aplicaţia
, pe care le puteți schimba folosind Aplicația php artisan: nume
comanda.
Modelele dvs. se încadrează în spațiul de nume implicit al aplicației și se află în dosarul aplicației. Activele, vizualizările și fișierele lingvistice ale aplicației se află în dosarul resurse. Directoarele distribuitorului, publicului și bootstrap-ului își păstrează locul ca și în versiunile mai vechi ale cadrului, în timp ce directoarele de configurare, stocare, bază de date și teste au fost mutate în rădăcina proiectului.
Dacă priviți în interiorul dosarului aplicației, veți observa o mulțime de clase, dar nu vă faceți griji pentru ele acum - vom ajunge la asta în cursul acestui articol.
Detecția mediului a fost mult îmbunătățită. În loc de toate directoarele complexe de configurare imbricate, aveți a .env
fișier la baza proiectului dvs. de a avea grijă de mediul de aplicație și toate variabilele de mediu. De asemenea php artisan tinker
comanda acum folosește pachetul Psysh în loc de Boris.
Injecția de metode a fost mult simplificată. Până la versiunea 4.2, a trebuit să solicitați containerului Inversion of Control (IoC) să furnizeze o instanță de clasă sau să o creeze în constructorul controlerului pentru ao face accesibilă în cadrul domeniului de clasă. Acum, puteți declara instanța de clasă sugerată de tip în semnătura metodei controlerului și containerul IoC va avea grijă de el, chiar dacă există mai mulți parametri în semnatura funcției controlerului.
Contractele sunt de fapt clase de interfață în deghizare. Interfețele sunt o metodă încercată și testată pentru eliminarea dependenței de clasă și dezvoltarea componentelor software cuplate în mod liber. Ele vă ajută în general să respectați regula "depinde de abstracții, nu de concreții".
Laravel cumpără în aceeași filosofie. Majoritatea componentelor majore de bază fac uz de aceste contracte pentru a menține cadrul cuplat în mod liber. De asemenea, le puteți utiliza în dezvoltarea pachetului.
De exemplu, dacă pachetul dvs. necesită cache, atunci, în loc să utilizați o clasă de cache din beton, puteți implementa Illuminate \ Contracte \ Cache
și veți fi liberi să conectați și să închideți implementarea cache-ului fără a schimba prea mult codul de pachet.
S-ar putea să întrebi modul în care Laravel se gândește la implementarea unui contract specific. Tot ce se întâmplă în interior Illuminate \ Fundația \ Application.php
fişier.
Artisan are o nouă caracteristică de cache în traseu. Rularea cache-ului accelerează în mod dramatic înregistrarea rutei aplicației dvs., cu beneficii de performanță vizibile în mod clar. Cu toate acestea, dacă aplicația se ocupă într-un număr mic de rute, s-ar putea să nu vedeți că s-ar presupune că există cache-ul de impact al rutei, ceea ce înseamnă că aceasta este mai potrivită cazurilor în care aplicația dvs. are un număr mare de rute.
Comenzile php artisan route: cache
și Traseul php artizan: clar
activați și dezactivați temporar cache-ul. După ce ați activat cache-ul pentru rute, modificările pe care le faceți pe rutele aplicației nu vor avea efect. Rularea cache-ului va fi, în general, implementată ca parte a procesului de implementare.
Middleware poate fi folosit pentru a adăuga straturi suplimentare pe rutele dvs. HTTP. Dacă doriți ca codul să fie executat înainte de fiecare rută sau înainte de anumite rute din aplicația dvs., atunci o astfel de bucată de cod este potrivită pentru o clasă middleware.
De exemplu, să presupunem că doriți să blocați o anumită gamă de adrese IP din aplicația dvs. pentru a face ca aplicația dvs. să fie indisponibilă în acea regiune. Într-un astfel de caz, va trebui să verificați IP clientul înainte de fiecare solicitare și să îi permiteți / dezactivați intrarea în aplicație. Acest lucru va fi mult de făcut în acțiunile controlerului dvs., astfel încât să utilizați în schimb middleware. Generați o clasă de middleware la app / HTTP / Middleware / RegionMiddleware.php
prin utilizarea php artisan face: middleware "RegionMiddleware"
.
Apoi, puteți să vă înregistrați middleware-ul în app / HTTP / Kernel.php
fișier prin adăugarea acestuia la $ middleware
matrice. De asemenea, puteți atașa middleware-ul la anumite rute prin adăugarea lui la $ routeMiddleware
și apoi trecerea acesteia în opțiunile de rută.
Autentificarea face parte din aproape toate aplicațiile web pe care le dezvoltați și se petrece mult timp scriind fișa de autentificare. Acesta nu este cazul cu Laravel 5. Migrațiile bazei de date, modelele, controlorii și opiniile trebuie doar să fie configurate pentru a face totul de lucru. Laravel 5 are un serviciu de înregistrare, care este o parte esențială a acestui outbox, gata să utilizeze sistemul de autentificare.
Au dispărut zilele în care ați declarat că evenimentele aplicației dvs. sunt declarate ca șiruri, deoarece obiectul evenimentului este acum disponibil. Puteți crea obiecte de eveniment utilizând php artisan face: eveniment
și obiecte de manipulare a evenimentului php artisan handler: eveniment
. Toate cursurile evenimentului și a operatorilor intră în interiorul app / Evenimente
și app / Handlers / Evenimente
dosar respectiv.
Odată ce v-ați creat evenimentele, puteți să le aruncați Eveniment :: incendiu (noul eveniment (params))
. Pentru a atașa ascultătorilor evenimentele dvs., trebuie să editați $ asculta
array în app / Furnizori / EventServiceProvider.php
fişier.
Laravel 5 vă permite să încapsulați complexitatea logicii de afaceri în obiecte simple de comandă.
De exemplu, să presupunem că aveți un magazin online în care utilizatorii înregistrează și cumpără articole electronice. Procesul de înregistrare poate implica verificarea adresei de e-mail a utilizatorului și a cardului de credit.
S-ar putea sa fie tentant sa dati tot acest cod intr-o actiune de controler, dar nu este o idee buna sa ai un cod care sa functioneze doar in contextul solicitarii HTTP, sa fie dificil de testat unitar din cauza cererilor HTTP si sa bloata actiunile controlerului.
Făcând acest lucru folosind comenzi vă va oferi mai multe avantaje. În primul rând, codul dvs. autonom va fi modular și un test de briză la unitate. În al doilea rând, din moment ce Laravel vă permite să coadăți comenzi, logica dvs. de afaceri poate fi executată asincron în fundal, ceea ce este imposibil de făcut cu acțiunile controlerului.
O coadă de gata de utilizare este furnizată în mod prestabilit cu cadrul, astfel încât să nu aveți nevoie să utilizați pachete de terțe părți. Tot ce trebuie să faceți este să configurați coada de așteptare și ar trebui să fiți bine să mergeți. Toate locurile de muncă queueable sunt păstrate în app / Comenzi
pliant. Odată ce ați creat comenzile dvs. de așteptare, puteți să le împingeți pur și simplu la coadă utilizând Queue :: push (comandă nouă ($ params))
.
Programarea sarcinilor a fost, de asemenea, îmbunătățită foarte mult. Anterior, a trebuit să configurați un cron pentru fiecare comandă de consola, dar nu mai mult. Veți avea nevoie doar de o singură intrare cron și vă puteți programa sarcinile în cadrul aplicației folosind o mulțime de sintaxă de zahăr.
Laravel 5 are suport nativ pentru mai multe sisteme de fișiere utilizând pachetul terț Flysystem. Aplicația dvs. poate utiliza stocarea locală sau cloud prin intermediul unei configurații simple. Va trebui doar să lucrați cu fațada sistemului de fișiere, iar operațiile de stocare subiacente vor fi luate în considerare automat. Puteți configura opțiunile de stocare în config / filesystems.php
fişier. În cazul în care aveți nevoie de acces la toate opțiunile de stocare disponibile în proiectul dvs., puteți ocoli fațada sistemului de fișiere și puteți lucra direct cu fațada discului.
Obiectul cererii vă ajută să injectați autentificarea / autorizarea și logica de validare a datelor în cererile dvs. Odată ce ați implementat logica dvs. de afaceri în obiectul de solicitare, trebuie să tastați indiciu în acțiunea unui controler, la fel ca în cazul injectării metodei.
Să decodificăm acest lucru folosind un exemplu de cod. A executa php artisan face: cere TutsPlusRequest
pentru a genera o clasă de solicitare la app / HTTP / Cereri / TutsPlusRequest.php
. Privind în conținutul acelui fișier, veți observa că artizanul a generat o metodă de reguli și o metodă de autorizare. Veți adăuga câteva reguli de validare în metoda dvs. de reguli.
'necesar | e-mail', 'parola' => 'necesar | min: 8']; // în funcția publică a acțiunii postLogin (\ App \ Http \ Requests \ TutsPlusRequest $ request) // codul nu se va declanșa // dacă regulile de validare // din cerere nu reușesc
Doriți ca e-mailul să fie un e-mail valid și parola să aibă cel puțin opt caractere. Ambele câmpuri sunt obligatorii. Dacă oricare dintre aceste reguli de validare nu reușește, acțiunea controlerului dvs. nu va fi executată și utilizatorul va fi redirecționat către pagina de formular.
Elixir este un API GulpJS pentru Laravel, care vă ajută să definiți sarcini de gulp pentru aplicațiile dvs. Scufundarea în GulpJS este dincolo de sfera de aplicare a acestui articol, dar puteți să aruncați o privire la site-ul său oficial și Elixir pentru mai multe informații.
Un caz de utilizare tipic pentru GulpJS este de a minimiza / concatenate fișierele CSS / JS. Pachetele de gulp se află în package.json
fișier la baza proiectului dvs., în timp ce sarcinile care trebuie executate sunt specificate în gulpfile.js
fişier. Pentru cei care sunteți deja familiarizați cu fluxul de lucru GulpJS, acest lucru ar avea mai mult sens, deoarece Elixir vă ajută să integrați GulpJS în aplicațiile Laravel.
Socialite este un pachet de primă parte care face integrarea autentificării terțelor părți în aplicațiile dvs. web cinch. Deoarece nu este inclus în mod implicit, trebuie să-l trageți folosind compozitorul. După ce ați terminat, trebuie să configurați furnizorii pe care doriți să îl utilizați în aplicația dvs. În prezent, Socialite acceptă Twitter, GitHub, Google și Facebook.
Sper că v-ați bucurat să vă uitați la specificul Laravel 5. Din perspectivă arhitecturală, cred că acest cadru a făcut salturi uriașe înainte, ceea ce va duce mult la menținerea codului aplicației dvs. web organizat și eliberarea de coșmarul care este întreținerea.
.