PHPPamokos.lt


13. Smulkmenos: Blade, Artisan, dd(), Eloquent, Whoops, Tinker ir Elixir

Galiausiai, aptarę svarbesnes Laravel 5 naujoves, užbaikime mūsų kelionę su "naudingomis smulkmenomis", kurių naujoje versijoje taip pat nemažai, bet jos ne tokios didelės kad galima būtų joms paskirti atskiras pamokas. Taigi, apie jas iš eilės.

Blade naujovė - šauktukai

Paprasčiausia ir turbūt dažniausiai pritaikoma naujovė bus Bladė šablonuose esantis kintamųjų išvedimas. Anksčiau jis veikė taip:

  • {{ $var }} (du skliaustai) - tiesiog kintamojo išvedimas
  • {{{ $var }}} (trys skliaustai) - "escapinto" kintamojo išvedimas, kur HTML ženklai buvo pakeičiami į jų ekvivalentus, pvz < buvo pakeičiamas į &lt

Laravel 5 versijoje, abiem atvejais - tiek su dviem, tiek su trimis skliaustais - bus vykdomas escap'inimas. O jei norėsite paprasto, neapdoroto varianto, naudokite vienus skliaustus su dviem šauktukais - kai, pvz, jums reikia realiai išvesti tai, ko rezultatas yra HTML kodas:

{!! Form::open() !!}

Nauji Artisan generatoriai

Artisan įgavo šiek tiek daugiau standartizacijos ir praktiškai viską daro per komandą make:XXXXXX. Dalį šių komandų jau pamatėme, atskiruose skyreliuose, o sąrašas atrodo daugmaž taip (iš pavadinimų paskirtis daugmaž aiški):

  • make:command
  • make:console
  • make:controller
  • make:event
  • make:middleware
  • make:migration
  • make:model
  • make:provider
  • make:request

dd() - VarDumper

Trumpa funkcija dd() yra viena mėgstamiausių Laravel programuotojų tarpe - ji šifruojama "Dump and Die". Kitaip tariant, nebereikia rašyti var_dump() ir die() atskirai.

Taigi, Laravel 5 versijoje ši funkcija buvo patobulinta - nuo šiol ji naudoja Symfony biblioteką VarDumper (dar viena Laravel priklausomybė nuo Symfony).

Tiesa, jeigu reikia galingesnio įrankio kodo debug'inimui, Laravel bendruomenė labai teigiamai įvertina ir rekomenduoja Laravel Debugbar.

Laravel Eloquent - Attribute Casting

Pakalbėkime apie kastingą. Ne, ne modelių ir kino aktorių - o PHP kintamųjų. Kaip turbūt žinote, PHP kaip kalba neturi griežtų kintamųjų apibrėžimų - kintamasis gali būti bet kas: skaičius, tekstinė eilutė, objektas ir t.t. Tas turi ir pliusų ir minusų - greitesnis kodo rašymas bet didesnė klaidų (ir neaiškaus veikimo, kai bandoma "lyginti obuolius ir kriaušes") tikimybė.

Jei tai liečia vien PHP kalbą, viskas gali būti kaip ir tvarkoje. Bet jei PHP pagalba reikia iš duomenų bazės išeksportuoti duomenis iš duomenų bazės ir pateikti, sakykime, JSON formatu (o tokių API poreikis vis daugėja, ypač mobilioms programėlėms), tada jau turi būti griežtai - ar tai skaičius, ar eilutė (su kabutėmis). Tam tikslui, traukiant duomenis per Eloquent, anksčiau Laravel 4 tekdavo naudoti appends laukus ir kurti papildomą cast'inimo funkciją, kaip čia:

public function getAgeAttribute($value)
{
    return (int) $value;
}

Dabar to daryti nebereikia - Laravel 5 siūlo tiesiog Eloquent modelyje apsirašyti masyvą $casts, kur ir nurodote, kokio tipo turi būti vienas ar kitas kintamasis, ateinantis iš duomenų bazės:

protected $casts = [
    'age' => 'integer'
];

Whoops - kitokie klaidų pranešimai

Laravel 5 versijoje nebeišvysime "įprasto" klaidų pranešimo lange iš dviejų dalių, kur kairėje buvo žingsniai, o dešinėje kiekvieno žingsnio informacija. Tam buvo naudojama išorinė biblioteka Whoops - kažkodėl Taylor nusprendė jos paslaugų atsisakyti, ir dabar klaidų pranešimai su stack-trace reikšmėmis bus rodomi tiesiog baltame ekrane.

Tiesa, jei jums priimtinesnis senas vaizdas, galite jį grąžinti, panaudoję komandą composer require filp/whoops ir perrašę klaidų apdorojimo mechanizmą faile app/Exceptions/Handler.php.

Galingesnis Tinker su Psysh

Kai pirmą kartą perskaičiau įrankio Psysh pavadinimą, pagalvojau kas čia per "psichas". Bet iš tikro labai naudingas dalykas tiems, kas mėgsta žaisti ir testuoti mažus kodo gabalėlius iš komandinės eilutės su komanda artisan tinker. Priminsiu, kad ji atidaro atskirą komandinės eilutės programą, kurioje galima rašyti kodo eilutes ir tiesiogiai gauti įvykdymo atsakymus. Kaip mini-kompiliatorius.

Tai va, Laravel 5 versijoje Tinker naudoja išorinę biblioteką Psysh - kas labai išplečia mūsų galimybės. Nuo šiol galėsime ten pat skaityti funkcijų dokumentaciją, lengvai ieškoti kintamųjų ar objektų, žiūrėti klaidų istoriją iš ankstesnių exception'ų ir t.t.

Laravel Elixir

Nors Laravel yra back-end PHP frameworkas, bet kiekvienam projektui reikia front-endo - HTML, CSS, JavaScript ir pan. Tai jeigu front-enderis nori dirbti aukštesniame lygyje su SASS, LESS ir panašiomis priemonėmis, Laravel siūlo naują pagalbinę priemonę pavadinimu Elixir. Kadangi pats kursas yra apie PHP, tai nusprendžiau atskiro skyriaus apie jį nedaryti - tuo labiau, kad pats nesu front-end specialistas. Tad jei norite paskaityti plačiau - štai oficialus aprašymas.

Bendrai kiek teko skaityti apie Elixir, vertinimai yra dvejopi - viena vertus, pagalbininkas, bet kita vertus - papildomas sluoksnis ir papildoma technologija, kurią reikia mokytis, jau nekalbant apie diegimą (jums reikės Node.js, Gulp).


Kurso apibendrinimas

Štai ir viskas, ką jums galiu papasakoti apie Laravel 5 versiją. Dabar jūsų eilė judėti prie praktikos - ar atnaujinsite savo projektus? Ar naujus kursite su naująja versija? Jei su tuo reikės kokios pagalbos ar tiesiog konsultacijos - drąsiai kreipkitės įprastu el.paštu povilas@phppamokos.lt. Iki susitikimo kituose kursuose ateityje!



(c) 2015-2018. Visais klausimais kreipkitės povilas@laraveldaily.com