Laravel

***Laravel*** ir bezmaksas, atvērtā koda PHP tīmekļa ietvars, ko izveidojis Teilors Otvels, kas ir paredzēts, lai izgatavotu tīmekļa lietojumprogrammas pēc modeļa—skats—kontrolieris (*MVC-model-view-controller*) arhitektūras modeļa. Dažas no Laravel iezīmēm ir modulāra pakošanas sistēma ar atvēlētu atkarību administratoru, dažādu veidu pieeju saistītajām datubāzēm, priekšrocībām, kas palīdz aplikāciju izvietošanai un uzturēšanai un tās tiekšanos uz *Syntactic Sugar* — sintaksi programmēšanas valodā, kas ir izveidota, lai padarītu lietas vienkāršāk saprotamas un izsakāmas.

2015. gada martā Laravel tiek uzskatīts par vienu no populārākajiem PHP ietvariem, kopā ar *Symfony2*, *Nette*, *Codelgniter*, *Yii2* un citiem ietvariem. Laravel pirmkods ir pieejams *[[GitHub]]* un licencēts zem *[[MIT Licence]]s* noteikumiem.

## Vēsture

Teilors Otvels izveidoja Laravel kā mēģinājumu, lai nodrošinātu daudz spēcīgāku alternatīvu *Codelgniter* ietvaram, kas nenodrošina drošu lietotāja autentifikāciju un autorizāciju. Laravel pirmā palaišana notika 2011. gada 9. jūnijā, tajā pašā mēnesī sekoja Laravel 1 palaišana. Laravel 1 ietver sevī iebūvētu atbalstu autentifikāciju, lokalizāciju, modeļus, skatus, sesijas, maršrutus un citus mehānismus, bet tam trūka kontroliera atbalsta, kas novērstu to no tā, ka tas būtu īsts MVC ietvars.

Laravel 2 tika izlaists 2011. gada septembrī, ietverot sevī dažādus uzlabojumus no autora un kopienas. Galvenie uzlabojumi ietvēra kontroliera atbalstu, kas padara Laravel 2 par pilnībā MVC atbalstošu ietvaru, kas atbalsta kontroles inversijas (*IOC*) principus un šablonu sistēmu *Blade*. Kā trūkumu var minēt, ka tika noņemta trešā pakete Laravel 2.

Laravel 3 tika izlaists 2012. gada februārī ar jaunu iezīmju komplektu, kas ietver komandrindas interfeisu *Artisan,* būvēts, lai atbalstītu datu bāzu pārvaldības sistēmu, datu bāzu migrāciju kā kontroles versijas formu datu bāzu izkārtojumam, atbalsta apstrādes notikumus un pakošanas sistēmu *Bundles*. Datu bāzu pieaugums un popularitāte Laravel 3 versijai bija pārāk liels slogs.

Laravel 4 ar segvārdu *Illuminate* tika izlaists 2013. gada maijā. Tas tika veidots, lai pilnībā pārrakstītu Laravel ietvaru, pārveidotu tā izkārtojumu atsevišķā paketē caur *Composer*, kas kalpo kā lietojumprogrammas līmeņa paketes pārvaldnieks. Šāds izkārtojums uzlaboja Laravel 4 elastību. Citas jaunās Laravel 4 iezīmes iekļāva ziņojumu rindas atbalstu, iebūvētu atbalstu dažādu e-pasta tipu sūtīšanai un atbalstu atliktu datu bāzu ierakstu dzēšanu, kuru dēvē par *‘’mīksto dzēšanu’’*.

Laravel 5 tika izlaists 2015. gada februārī, kā iekšējo pārmaiņu rezultāts, kas beidzās ar Laravel 4.3 pārnumerāciju. Jaunās Laravel 5 iezīmes ietvēra atbalstu periodiski izpildītu uzdevumu plānošanā, izmantoto paketi sauca *Scheduler*, abstrakcijas slāni *Flysystem*, kurš ļauj lietot attālo glabāšanu tāpat kā lokālā failu sistēma, uzlabotu paketes aktīvu apstrādi caur *Elixir* un vienkāršotu ārēji apstrādātu autentifikāciju pēc *Socialite* paketes izvēles. Laravel 5 arī ieviesa jaunu iekšējo koku direktorija struktūru izstrādātajām aplikācijām.

Laravel 5.1 tika izlaists 2015. gada jūnijā, šī versija ir pirmā Laravel versija, lai saņemtu ilgtermiņa atbalstu (*LTS-long-term support*), ar plānotu pieejamību kļūdu labojumiem uz diviem gadiem un drošības plāksteriem uz trīs gadiem. Ilgtermiņa atbalsta Laravel izlaišana tika plānota izlaist katros divos gados

Laravel 5.3 tika izlaists 2016. gada 23. augustā. Jaunās iezīmes Laravel 5.3 ir vērstas uz uzlabotu izstrādātāju ātrumu, pievienojot papildu uzlabojumus kopējiem uzdevumiem.

## Iezīmes

Sekojošās iezīmes kalpo kā Laravel galvenie dizaina punkti (kur nav īpaši atzīmēts, apraksti attiecas uz Laravel 3 iezīmēm).

* *Bundles* nodrošina modulāru pakošanas sistēmu kopš tika izlaists Laravel 3, komplektā ar jau pieejamām iezīmēm viegli papildinot aplikācijas. Turklāt, Laravel 4 lieto *Composer* kā atbalsta pārvaldnieku, lai pievienotu nedroša ietvara un Laravel specifiskas PHP paketes, kas pieejamas no *Packagist* krātuves.
* *Eloquent ORM* (objektrelāciju kartēšana) ir uzlabota PHP aktīvu ieraksta modeļu īstenošana, nodrošinot vienlaikus iekšējās metodes par izpildes ierobežojumu attiecībām starp datu bāzu objektiem. Pēc aktīvu ieraksta modeļa, objektrelāciju kartēšana prezentē datu bāzu tabulas kā klases ar saistītu objekta gadījumu kā vienu tabulas rindu.
* *Query builder*, pieejams kopš Laravel 4, piedāvā daudz tiešāku piekļuvi datu bāzēm alternatīvu objektrelāciju kartēšanai. Tā vietā, kā pieprasīt tiešu SQL vaicājumu pierakstu, Laravel vaicājumu veidotājs nodrošina komplektu ar klasēm un metodēm, kas spēj veidot vaicājumus tehniski. Tas arī ļauj izvēlēties uzkrātos rezultātus no realizētajiem vaicājumiem.
* *Application logic* ir neatņemama aplikāciju izstrādes sastāvdaļa, kuru īsteno vai nu lietojot kontrolierus, vai daļu no programmas deklarācijas. Lietotā sintakse, lai noteiktu aplikāciju loģiku ir līdzīga tādai, kuru izmanto Sinatra ietvarā.
* *Reverse routing* definē attiecības starp saitēm un maršrutiem, ļaujot vēlāk izmainītos maršrutus pavairot uz attiecīgām saitēm. Kad saites ir izveidotas, izmantojot eksistējošu maršrutu vārdus, atbilstošie formu resursu identifikatori (Url) automātiski tiek izveidoti Laravel.
* *Restful controllers*- nodrošina izvēles veidu, lai atdalītu *HTTP GET* un *POST* pieprasījumus.
* *Class auto loading*- nodrošina automātisku PHP klašu ielādi, bez nepieciešamības manuāli uzturēt iekļautos ceļus. Pēc pieprasījuma ielādes novērš nevajadzīgo komponenšu iekļaušanu, tāpēc tiek ielādētas tikai faktiski lietojamās komponentes.
* *View* *composers* kalpo kā pielāgojama loģiskā koda vienība, kas var tikt izpildīta, kad skats ir ielādējies.
* *Blade* *templating engine* apvieno vienu vai vairākas veidnes ar datu modeļiem, lai uzrādītu rezultātu skatus, pārveidojot viednes PHP kodā, lai uzlabotu izpildījumu. *Blade* sniedz virkni arī savas kontroles struktūras, kā nosacījuma apgalvojums un cikli, kas ir iekšēji samēroti ar PHP dublikātiem. Turklāt, Laravel pakalpojumu var saukt no *Blade* veidnēm un šablonu līdzeklis pats var tikt pagarināts ar pasūtījuma direktīvām.
* *loC containers* dod iespēju jauniem objektiem tikt radītiem, sekojot kontroliera (*loC*) inversijas principam.
* *Migrations* nodrošina kontroles sistēmas versiju datu bāzu shēmām, padarot iespējamu saistīt izmaiņas aplikācijas pirmkodā un nepieciešamās izmaiņas datu bāzu izkārtojumā. Kā rezultāts, šī iezīme vienkāršo Laravel balstītās aplikācijas izvietošanu un atjaunināšanu.
* *Database seeding* nodrošina iespēju aizpildīt datu bāzu tabulas ar izvēlētiem noklusējuma datiem, kas var tikt izmantoti aplikāciju testēšanā vai realizēti kā daļa no aplikācijas sākuma uzstādīšanas.
* *Unit testing* ir neatņemama Laravel daļa, kura pati satur vienības testu, kas atrastu un novērstu ietvara regresiju. Vienības testi var tikt palaisti caur nosacījuma *artisan* *[[Komandrindas interpretators|command- line utility]]*.
* *Automatic pagination* vienkāršo lappušu numerācijas īstenošanas uzdevumu, aizstājot parasto manuālo īstenošanas pieeeju ar automatizētu integrētu metodi Laravel.
* *Form request* ir Laravel 5 iezīme, kas kalpo kā ievades validācijas formas bāze ar iekšēji saistošu notikumu klausītāju, atsaucoties uz automatizētās validācijas formas metodi un aktuālās sākuma formas.
* *Homestead- a* *[[Vagrant]]* *virtual machine*- nodrošina Laravel izstrādātājus ar visiem nepieciešamajiem rīkiem, lai izstrādātu Laravel taisni no kastes, ieskaitot *[[Ubuntu Linux|Ubuntu]]*, *Gulp*, *Bower* un citus izstrādātāju rīkus, kas ir noderīgi, lai izstrādātu pilna mēroga tīmekļa aplikāciju.

### Piedāvātās paketes

*Ready-to-use* Laravel nodrošinātās paketes caur *Composer* un *Packagist* iekļauj:
 
* *Cashier*, ieviests Laravel 4.2, nodrošina saskarni, lai pārvaldītu abonēšanas norēķinu pakalpojumus, kas nodrošināti ar *Stripe*, piemēram, kuponu apstrāde un rēķinu ģenerēšana.
* *SSH*, ieviests Laravel 4.1, ļauj programmēt *CLI* komandas izteiksmi uz attāliem serveriem, izmantojot *Secure Shell ([[SSH]])* kā šifrētu tīkla protokolu.
* *Scheduler*, ieviests Laravel 5.0, ir papildinājums *Artisan*, kas ļauj programmēt plānošanu no periodiski izpildītiem uzdevumiem. Iekšēji *Scheduler* balstās uz *cron* dēmona, lai palaistu vienu *Artisan* darbu, kas savukārt izpilda konfigurētus uzdevumus.
* *Flysystem*, ieviests Laravel 5.0, ir failu sistēmas abstrakcijas slānis, kas ļauj vietējai failu sistēmai un mākoņu bastītam uzglabāšanas serverim, ieviests ar *Amazon S3* un *Rackspace Cloud* , izmantot pārredzami un tādā pašā veidā.
* *Socialite*, ieviests Laravel 5.0 kā izvēles pakete, nodrošina vienkāršotus autentifikācijas mehānismus ar dažādiem *Oauth* sniedzējiem, ieskaitot ''Facebook'', ''Twitter'', ''Google'', *GitHub* un *Bitbucket*.

### Artisan CLI
Laravel *Artisan* komandrindas saskarne (*CLI- command-line interface*) sākotnēji tika ieviesta Laravel 3 ar virkni ierobežotu iespēju. Laravel vēlāka nomainīšanās uz *Composer* bāzētu arhitektūru ļāva *Artisan* iekļaut dažādus *Symfony* ietvara komponentus, kā rezultātā Laravel 4 tika pieejamas papildu *Artisan* iezīmes.
Bieži izmantotie *Artisan* lietojumi ietver vadošo datu bāzu migrāciju un produkciju, publicējot paketes vērtību un radot tekstveidnes kodu jauniem kontrolieriem; tā atbrīvo izstrādātāju no pareiza koda radīšanas *skeletons*. *Artisan* funkcionalitāte un spējas iespējams arī paplašināt, ieviešot jaunas pielāgotas komandas, kuras, piemēram, var tikt izmantotas, lai automatizētu lietojumprogrammas specifiku, atkārtojot uzdevumus.

## Konferences
alt=Teilors Otvels Laracons konferencē, 2013. gads|thumb|Teilors Otvels ''Laracon'' konferencē, 2013. gads
*Laracon* ir konference, kas centrēta ap Laravel ietvaru, aptverot tā attīstību, lietojumus un saistītas vispārējās programmatūras izstrādes praksi. *Laracon* konference notiek gan ASV, gan Eiropā, galvenokārt organizēta ar *UserScape* sponsoru atbalstu. Līdz 2016. gadam ir notikušas sekojošas *Laracon* konferences:

## Piezīmes
PHP 5.3.7 vai jaunākai versijai ir nepieciešama Laravel 4.1 versija un vecāka versija, Laravel 4.2 un 5.0 vajadzīgs vismaz PHP 5.4, bet Laravel 5.1 prasa PHP 5.5.9 vai jaunāku.

## Atsauces

## Papildu informācija
Laravel Design Patterns and Best Practices, Packt, , July 2014, by Arda Kılıçdağı and H. İbrahim Yilmaz

## Ārējās saites
* Oficiālā mājaslapa, pirmkods un GitHub.
* Sāc strādāt ar Laravel - programmēšanas piemēri.
* Laravel palīglapa — īso piezīmju kolekcija
* Laravel 5.0