Cum se creează un ajutor Laravel

Mai întâi, aș prefera ca site-ul oficial Laravel să vorbească despre ajutoare.

Laravel include o varietate de funcții globale "helper" PHP. Multe dintre aceste funcții sunt utilizate de cadrul însuși; cu toate acestea, sunteți liber să le folosiți în propriile aplicații dacă le găsiți convenabil.

Deci, în principiu, ajutoarele din Laravel sunt funcții de utilitate integrate pe care le puteți apela de oriunde din aplicația dvs. Dacă nu ar fi fost furnizate de cadrul central, s-ar fi putut încheia dezvoltarea propriilor clase de ajutoare.

Deși nucleul oferă deja o varietate de ajutoare, există întotdeauna o șansă că veți avea nevoie de propriul dvs. și doriți să dezvoltați unul, astfel încât să nu trebuiască să repetați același cod aici și acolo, aplicând astfel o mai bună întreținere. Veți învăța cum să creați un helper personalizat Laravel în acest tutorial.

Ajutoarele din Laravel

După cum am discutat mai devreme, există o mulțime de ajutoare disponibile în centrul cadrului Laravel. Acestea sunt grupate în funcție de funcționalitatea pe care o oferă. Iată o listă de grupuri ajutoare.

Arrays

Ajutorii din acest grup oferă funcționalitate pentru a manipula elementele matrice. De cele mai multe ori, vă aflați în situația în care doriți să efectuați diferite operațiuni pe elemente de matrice. Deci, acesta este locul unde ar trebui să priviți mai întâi pentru a vedea dacă ceea ce căutați există deja.

Căi

Mi se pare foarte util ajutoarele din această categorie. Ei returnează calea complet calificată a diferitelor directoare ca app, storage, config și altele asemenea. Pun pariu că folosiți majoritatea acestor ajutoare deja în aplicația Laravel.

Siruri de caractere

Manipularea în șir este ceva inevitabil în dezvoltarea aplicațiilor de zi cu zi. Deși există o mulțime de funcții de manipulare șir furnizate de PHP în sine, veți găsi câteva mai multe bunuri utile în această secțiune.

URL-uri

Veți găsi foarte puține în această categorie, dar ele sunt utilizate în întreaga aplicație. Ele sunt folosite pentru a genera adrese URL de acțiune pentru rute, materiale și forme.

Diverse

Această categorie conține asistenți care oferă o varietate de funcționalități, de la logare la depanare și multe altele.

Pentru o referire completă a ajutoarelor Laravel, nu există un loc mai bun decât documentația oficială.

Creați primul dvs. ajutor personalizat

Acum aveți o înțelegere de bază a ajutoarelor Laravel și pentru ce sunt folosite. În această secțiune, voi continua și voi demonstra cum vă puteți crea propriul ajutor personalizat care poate fi utilizat la nivel global în aplicația dvs. Laravel.

Pentru a păstra lucrurile simple și ușor de înțeles, acesta va fi un ajutor destul de simplu care are nevoie de un userid și returnează un nume de utilizator ca răspuns. Desigur, asta nu sună fantezie, dar cred că este suficient să demonstrăm conceptul și puteai întotdeauna să îl extindeți pentru a împlini cerințele complexe.

Presupun că aveți o tabelă de utilizatori în baza dvs. de date și are cel puțin două domenii - userid și username.

Scheletul unui ajutător Laravel

Înainte de a merge mai departe și de a crea fișierele, să aruncăm o privire rapidă asupra fișierelor pe care le vom crea în restul articolului.

  • app / Helpers / Envato / User.php: Este fișierul nostru ajutător care ține logica ajutatorului nostru.
  • app / Furnizori / EnvatoServiceProvider.php: Este un fișier furnizor de servicii personalizate care încarcă fișierul nostru helper personalizat.
  • config / app.php: În acest fișier, vom declara furnizorul nostru de servicii personalizate și, de asemenea, ne ajută să definim un alias ajutorului nostru, astfel încât să nu trebuie să folosim numele de clasă complet calificat al ajutorului nostru.
  • rute / web.php: Un fișier de traseu destul de standard Laravel unde vom încerca de fapt ajutorul nostru.

Creați fișiere Helper

Deși ați putea plasa fișierele de asistență oriunde în aplicație, modul mai intuitiv și standard sugerează că ar trebui să meargă sub aplicaţia director.

Deci, du-te și creați o Helpers / Envato directorul de sub aplicaţia și de a crea un User.php fișier cu următorul conținut. Desigur, ați putea plasa direct sub aplicaţia sau app / Helpers dar oferim ca nivelul suplimentar să ne permită să organizăm asistenții noștri într-o formă bună, mai ales atunci când veți avea o mulțime de ele.

unde ('userid', $ user_id) -> primul (); retur (isset ($ user-> username)? $ user-> username: ");

Fișierul începe cu o declarație destul de standardă a spațiului de nume:

spațiul de nume App \ Helpers \ Envato;

Scopul ajutorului nostru personalizat este de a prelua un nume de utilizator bazat pe un nume de utilizator. Prin urmare, trebuie să interacționăm cu baza de date și care ne obligă să includem DB Fadeada.

utilizați Iluminare \ Suport \ Ferestre \ DB;

Pentru cei care nu cunosc fațadele Laravel, este doar o altă modalitate convenabilă de a accesa obiectele din recipientele de serviciu. Alternativ, ați fi putut utiliza injecția de dependență.

Mergând înainte, vine implementarea concretă a ajutorului nostru. După cum puteți vedea, există o metodă statică care definește logica preluării unui nume de utilizator bazat pe un nume de utilizator.

$ user = DB :: tabel ('utilizatori') -> unde ('userid', $ user_id) -> first ();

utilizator $ obiect conține înregistrarea bazei de date cu ajutorul utilizatorului. În cele din urmă, metoda returnează numele de utilizator ca răspuns în următoarea declarație.

retur (isset ($ user-> username)? $ user-> username: ");

Asta e în ceea ce privește dosarul nostru de ajutor.

Acum am creat fișierul nostru de ajutor, dar întrebarea este cum îl veți folosi? Două soluții rapide îmi vin în minte:

  • Puteți include numele fișierului nostru helper în composer.json, astfel încât să se încarce automat. Apoi, ați putea să apelați imediat metoda statică a clasei noastre ajutoare.
  • Puteți continua și creați un furnizor de servicii Laravel care vă permite să vă înregistrați fișierul helper personalizat, astfel încât cadrul Laravel îl încarcă împreună cu alte dependențe. Înregistrați furnizorul respectiv de servicii în configurația Laravel și creați un alias pentru a utiliza ajutorul dvs..

Desigur, primul este destul de rapid și ușor de implementat și este posibil să fiți tentat să faceți acest lucru, dar aș sugera mai degrabă acesta din urmă, deoarece pare mai mult un mod artizan și este mai ușor de întreținut.

Deplasați-vă la linia de comandă și executați următoarea comandă din rădăcina aplicației pentru a crea un nou furnizor de servicii.

$ php artizan make: furnizor EnvatoServiceProvider Provider creat cu succes.

Ar trebui să vedeți mesajul care confirmă că a fost creat cu succes app / Furnizori director.

Deschideți fișierul și ar trebui să vedeți deja două metode acolo. Cel important în contextul acestui articol este Inregistreaza-te metodă. Da, este gol în acest moment, așa că hrănim niște lucruri pentru ao face mai utilă.

funcția publică () requ_once app_path (). '/Helpers/Envato/User.php'; 

Metoda de înregistrare este utilizată pentru a înregistra dependențele dvs. și am făcut exact acest lucru. Am inclus fișierul nostru helper personalizat.

Iată cum app / Furnizori / EnvatoServiceProvider.php fișierul ar trebui să aibă grijă de modificări.

Deci, totul este destul de bun până acum. Avem suportul nostru personalizat și furnizorul de servicii pe masă.

Apoi, trebuie să informăm pe Laravel despre furnizorul nostru de servicii, astfel încât să îl poată încărca în timpul operațiilor de bootstrapping. Să deschidem config / app.php și adăugați următoarea intrare în furnizorii de array la sfârșit.

App \ Furnizori \ EnvatoServiceProvider :: clasa,

Pentru a folosi ajutorul nostru într-un mod convenabil, am putea crea și un alias. Deci, să facem asta prin adăugarea următoarei intrări în pseudonime array la sfârșitul aceluiași fișier.

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

Prin definirea acestei intrări, putem să sunăm ajutorul nostru folosind EnvatoUser cuvinte cheie. Destul de convenabil, nu? Pentru referința dvs., iată-le completă config / app.php fişier.

 "Laravel", / * | ------------------------------------------- ------------------------------- Mediul de utilizare | ----------------------------------------------- --------------------------- | Această valoare determină "mediul" în care este aplicația dvs. în prezent | care ar putea determina modul în care preferați să configurați diferite serviciile pe care aplicația dvs. le utilizează. Setați acest lucru în fișierul ".env". | * / 'env' => env ('APP_ENV', 'producție'), / * | ----------------------------- --------------------------------------------- Mod de depanare a aplicației | ---------------------------------------------- ---------------------------- | | Când aplicația dvs. este în modul de depanare, mesaje de eroare detaliate cu | stadiile de stivă vor fi afișate la fiecare eroare care apare în cadrul dvs. | cerere. Dacă este dezactivată, este afișată o pagină de eroare generică simplă. | * / 'debug' => env ('APP_DEBUG', false), / * | ------------------------------- ------------------------------------------- Adresa URL a aplicației | ----------------------------------------------- --------------------------- | Această adresă URL este utilizată de consolă pentru a genera corect adresele URL atunci când se utilizează | instrumentul liniei de comandă Artisan. Ar trebui să setați acest lucru la rădăcina lui | aplicația dvs., astfel încât să fie utilizată atunci când executați sarcinile Artisan. | * / 'url' => env ('APP_URL', 'http: // localhost'), / * | ------------------------- ------------------------------------------------- | Fusul orar al aplicației | ----------------------------------------------- --------------------------- | Aici puteți specifica fusul orar implicit pentru aplicația dvs., care | vor fi utilizate de funcțiile datei și datei de timp PHP. Am plecat | înainte și a stabilit acest lucru la o implicit sensibil pentru tine din cutie. | * / 'fusul orar' => 'UTC', / * | ------------------------------------ -------------------------------------- Configurația locală a aplicației | ---------------------------------------------- ---------------------------- | | Localizarea aplicației determină localizarea implicită care va fi utilizată | de către furnizorul de servicii de traducere. Sunteți liber să setați această valoare | la oricare dintre localizările care vor fi suportate de aplicație. | * / 'locale' => 'en', / * | ------------------------------------ -------------------------------------- Aplicație Fallback Locale | ---------------------------------------------- ---------------------------- | | Parametrul fallback determină localizarea pe care să o utilizeze atunci când cea curentă | nu este disponibilă. Aveți posibilitatea să modificați valoarea pentru a corespunde oricăror din | folderele de limbă care sunt furnizate prin intermediul aplicației dvs. | * / 'fallback_locale' => 'en', / * | ------------------------------------ -------------------------------------- Tasta de criptare | ----------------------------------------------- --------------------------- | Această tastă este utilizată de serviciul de criptare Illuminate și trebuie setată | la un șir aleator de 32 de caractere, altfel aceste șiruri criptate | nu va fi în siguranță. Faceți acest lucru înainte de a implementa o aplicație! | * / 'cheie' => env ('APP_KEY'), 'cipher' => 'AES-256-CBC', / * | -------------------------------------------------- ---- | Configurarea jurnalului | ----------------------------------------------- --------------------------- | Aici puteți configura setările jurnalului pentru aplicația dvs. Din | la cutie, Laravel folosește biblioteca de logare PHP. Acest lucru dă | puteți utiliza o varietate de agenți de manipulare / formatatori de jurnal puternici. | | Setări disponibile: "single", "daily", "syslog", "errorlog" | * / 'log' => env ('APP_LOG', 'single'), 'log_level' => env ('APP_LOG_LEVEL', 'debug'), / * | -------------------------------------------------- ----------- | Furnizori de servicii autoload | ---------------------------------------------- ---------------------------- | | Furnizorii de servicii enumerați aici vor fi încărcați automat pe | cererea dumneavoastră. Simțiți - vă liber să vă adăugați propriile servicii la | această matrice pentru a acorda funcționalități extinse aplicațiilor dvs. | * / "furnizori" => [/ * * Furnizori de servicii Laravel Framework ... * / Illuminate \ Auth \ AuthServiceProvider :: clasa, iluminare \ Broadcasting \ BroadcastServiceProvider :: class, iluminare \ bus \ BusServiceProvider :: class, Illuminate \ Cache \ CacheServiceProvider :: Class, Illuminate \ Fundația \ Furnizori \ ConsoleSupportServiceProvider :: Class, Illuminate \ Cookie \ CookieServiceProvider :: clasă, Illuminate \ Database \ DatabaseServiceProvider :: clasă, Illuminate \ Encryption \ EncryptionServiceProvider :: class, Illuminate \ Filesystem \ FilesystemServiceProvider :: class , Iluminare \ Fundații \ Furnizori \ FoundationServiceProvider :: clasă, iluminare \ Hashing \ HashServiceProvider :: clasă, iluminare \ Mail \ MailServiceProvider :: clasă, iluminare \ Notificări \ Pipeline \ PipelineServiceProvider :: clasă, iluminare \ Queue \ QueueServiceProvider :: clasă, iluminare \ Redis \ RedisServiceProvider :: clasă, iluminare \ Auth \ parole \ PasswordResetServi ceProvider :: clasă, iluminare \ Sesiune \ SessionServiceProvider :: clasă, iluminare \ Traducere \ TraducereServiceProvider :: clasă, iluminare \ Validare \ ValidationServiceProvider :: clasă, iluminare \ View \ ViewServiceProvider :: class, / * * Laravel \ Tinker \ TinkerServiceProvider :: Class, / * * Furnizori de servicii de aplicații ... * / App \ Providers \ AppServiceProvider :: clasă, App \ Providers \ AuthServiceProvider :: class, // App \ Providers \ BroadcastServiceProvider :: class, App \ \ EventServiceProvider :: clasă, aplicații \ furnizori \ RouteServiceProvider :: class, App \ Providers \ EnvatoServiceProvider :: class,], / * | --------------------- -------------------------------------------------- --- | Aliasuri de clasă | ----------------------------------------------- --------------------------- | Această serie de pseudonime de clasă va fi înregistrată atunci când această aplicație | este pornit. Cu toate acestea, nu ezitați să vă înregistrați cât doriți pseudonimele sunt "leneș" încărcate astfel încât să nu împiedice performanța. | * / 'Alias-uri' => [ 'App' => Illuminate \ Support \ Fațadele \ App :: clasa, 'Artisan' => Illuminate \ Support \ Fațadele \ Artisan :: clasa, 'Auth' => Illuminate \ Suport \ Fațade \ Auth :: clasa, 'blade' => Illuminate \ Suport \ Fațadele \ blade :: clasa, 'Broadcast' => Illuminate \ Suport \ Fațadele \ Broadcast :: clasa, 'Bus' => Illuminate \ Suport \ Fațade \ Bus :: clasa, 'Cache' => Illuminate \ Support \ Fațadele \ Cache :: clasa, 'Config' => Illuminate \ Support \ Fațadele \ Config :: clasa, 'Cookie' => Illuminate \ Support \ Fațadele \ Cookie :: clasă, 'Crypt' => Illuminate \ Support \ Fațadele \ Crypt :: clasa, 'DB' => Illuminate \ Support \ Fațadele \ DB :: clasa, 'Elocvent' => Illuminate \ Baza de date \ Elocvent \ model :: clasa, 'Eveniment' => Iluminare \ Suport \ Fațade \ Eveniment :: clasă, 'Fișier' => Iluminare \ Suport \ Fațade \ Fișier :: clasă, 'Gate' => Iluminare \ '=> Illuminate \ Support \ Fațadele \ Hash :: clasă, 'Lang'=> Illuminate \ Support \ Fațadele \ Lang :: clasă, 'Jurnal'=> Illuminate \ Support \ Fațadele \ Log clasă, :: '= Mail' > Iluminare \ Suport \ Ferestre \ Mail :: clasă, 'Nr tificarea“=> Illuminate \ Support \ Fațadele \ Notificare :: clasa, 'Parola' => Illuminate \ Support \ Fațadele \ Password :: clasa, 'Queue' => Illuminate \ Support \ Fațadele \ Coadă :: clasa, 'Redirect' => Iluminare \ Suport \ Fațade \ Cerere :: clasă, 'Răspuns' => Iluminare \ Suport \ Iluminare \ Suport \ Facade \ Reacții \ Facade \ Reacții \ Ferestre \ Răspundeți # clasa, 'Route' => Iluminare \ Suport \ Ferestre \ Sesiune :: clasă, 'Stocare' => Iluminare \ Suport \ Ferestre \ Stocare :: clasă, 'URL' Fasade \ Validator :: clasă, 'View' => Iluminare \ Suport \ Facade \ Vizualizare :: clasă, 'EnvatoUser' => App \ Helpers \ Envato \ User :: class;

Suntem aproape acolo! Am făcut toată munca grea pentru a ajunge aici și acum putem profita de beneficiul ajutorului nostru personalizat.

Primul tău ajutor personalizat în acțiune

Din nou, pentru a păstra lucrurile simple și simple, vom defini un traseu de bază Laravel și vom chema ajutorul de acolo!

Mergeți și creați o rute / web.php fișier cu următorul conținut.

Are nevoie de explicații? Tocmai am chemat ajutătorul personalizat prin stenogramă EnvatoUser :: get_username, și ar trebui să returneze numele de utilizator.

Desigur, puteți să sunați ajutorul nostru de oriunde din aplicație, fie că este vorba de un controler sau de o viziune.

Așa că se încheie povestea noastră astăzi.

Concluzie

Ajutorii din Laravel sunt într-adevăr o trăsătură puternică și sunt sigur că, în calitate de dezvoltator, vă place să extindeți acest aspect. Și acesta a fost subiectul zilelor noastre - am trecut prin elementele de bază ale structurii de fișiere helper Laravel și am creat un ajutor util personalizat.

Sper că v-ați bucurat de acest articol și vă ajută să creați propriile dvs. ajutoare personalizate în dezvoltarea de aplicații zilnice Laravel.

Nu ezitați să lăsați comentariile și interogările dvs. în feedul de mai jos. Am, de asemenea, prinde comentarii pe Twitter mea și să răspundă la ele cât de repede pot!

Cod