1. Pradžia: pažintis, reikalingi įrankiai ir diegimas

1.1. Kas yra Laravel ir kuo jis įdomus?

Laravel yra vienas iš populiarių PHP kalbos frameworkų.

Naudinga žinoti: kas yra frameworkai ir kam jie reikalingi?

Pats terminas "framework" reiškia "struktūra", "karkasas" arba "griaučiai". Programavimo pasaulyje tai yra kodo rinkinys, ant kurio viršaus daug patogiau pradėti "lipdyti" jūsų projektą. Dažniausiai framework'o viduje yra suprantama katalogų struktūra, paruoštas kodas paprasčiausiems veiksmams atlikti (kad nereikėtų rašyti nuo nulio), o taip pat yra galimybė framework'ą praplėsti, parsiunčiant papildomas klases/bibliotekas iš interneto.

Bendrai, framework'ų tikslas yra paspartinti projektų kūrimą - suteikti pradinius griaučius ir išgelbėti programuotojus nuo dviračių išradinėjimų, vietoj to panaudojamas jau paruoštas ir ištestuotas kodas.

PHP kalbos populiariausi framework'ai yra šie:
  • Symfony
  • Laravel
  • CodeIgniter
  • Zend Framework
  • CakePHP
  • Yii
Kiekvienas iš jų turi privalumų ir trūkumų, framework'o pasirinkimą lemia konkretus projektas, kurį norite sukurti. Bet Laravel iš šio sąrašo yra neabejotinai "karščiausias", t.y. sparčiausiai augantis rinkoje, dėl to ir paruoštas šis kursas.


Laravel turi šiuos pagrindinius privalumus:

  • Gan paprastas išmokti (palyginus su Symfony ar Zend)
  • Galutinis kodas gaunasi "gražus" ir lengvai skaitomas
  • Darbui su duomenų baze turi gerą ORM Eloquent
  • Naudoja Composer paketų diegimui, dalis kurių yra Symfony klasės
  • Turi komandinės eilutės pagalbininką Artisan, kurio pagalba išvengiama nemažai rankinio darbo
  • Norint kurti sudėtingas aplikacijas, turi tokius dalykus kaip Inversion of Control ar Facades
  • Turbūt svarbiausia - turi neblogą dokumentaciją ir vis didėjančią naudotojų bendruomenę

Kol kas nesigilinkite į kai kuriuos terminus, jei jų nesuprantate - kalbėsime apie viską iš eilės.

Užsimenant trumpai apie Laravel trūkumus (nėra nieko tobulo), išskirčiau vieną pagrindinį:

  • Gan daug veiksmų atliekama su komandine eilute, kas reiškia kad turite turėti prieigą prie serverio per SSH - t.y. "shared-hosting" aplinkoje su Laravel dirbti gan nepatogu. Įmanoma, bet nelengva.

    Kita vertus, rimtesni projektai dabar retai talpinami share-hosting aplinkose - atpigus dedikuotų serverių paslaugai ir atsiradus tokiems žaidėjams kaip Digital Ocean (kur galima gauti dedikuotą serverį už 5 dolerius per mėnesį), visi rimtesni PHP frameworkai perėmė tą komandinės eilutės filosofiją, tad jums teks prie jos priprasti.

Šio kurso rašymo metu naujausia Laravel versija yra Laravel 5.4, oficialiai išleista 2017 metų sausio 24 dieną. Jei internete rasite pamokų ar kokios informacijos, atidžiai pažiūrėkite, kokiai būtent Laravel versijai skirtas tekstas, nes vis dar labai daug informacijos internete yra apie senesnę Laravel 4 versiją, kuri gan stipriai skiriasi nuo penktosios. Tiesa, versijos nuo 5.0 iki 5.4 skiriasi gan nežymiai.

 

1.2. Ką reikia jau mokėti, pradedant mokytis Laravel?

Pradėdamas šį kursą, turėsiu omenyje, kad jūs jau:

  • Mokate programuoti PHP kalba ir būtų gerai jei esate sukūrę bent vieną realų projektą
  • Mokate objektinį programavimą bent jau pagrindų lygyje, nes prie jų nesustosime
  • Mokate HTML/CSS - nebūtinai labai gerai, bet kad neišsigąstumėte jų komandų, nes šio kurso metu konstruosime realų projektą, tad be front-end kodo neapsieisime
  • Jeigu esate išbandę ar naudoję kokį kitą frameworką, tai būtų privalumas - pora skyrelių galėsite praeiti lengviau (pats kažkada perėjau prie Laravel nuo CodeIgniter)

Tiesa, jeigu jaučiate, kad kažkurioje iš šių sričių jums trūksta žinių, nesijaudinkite: visų pirma, visko tobulai mokėti neįmanoma, o kitas dalykas - galėsite "pakeliui" surasti reikalingą informaciją per "Google", arba pasikonsultuoti su mokytoju ar kitais studentais ir užduoti klausimų.

 

1.3. Kokius įrankius reikia paruošti šiam kursui?

Įrankis 1. Web-serveris

Kodą rašysime ir pavyzdinį projektą kursime kiekvienas savo lokaliame kompiuteryje - taip bus patogiau ir nereikės kiekvieną kartą kažko įkelinėti į nutolusį serverį. Tam tikslui reikia savo kompiuteryje įdiegti web-serverį su PHP/MySQL. Pats dirbsiu Windows operacinės sistemos aplinkoje, jai vienas patogiausių paruoštų sprendimų yra nemokamas XAMPP, kurio sudėtyje yra visos trys reikalingos dalys:

  • Apache web-serveris
  • PHP
  • MySQL

Windows aplinkoje XAMPP yra diegiamas tiesiog "Next -> Next -> Next -> Finish" principu. O po sėkmingo diegimo, reikės tą serverį paleisti kiekvieną kartą kai norėsite paleisti web-projektą lokaliai. Tam reikės paleisti programą "XAMPP Control Panel" ir paspausti "Start" prie Apache ir MySql skilčių (paveiksliuke žemiau tai jau padaryta, tad aktyvūs mygtukai "Stop"):

Pastaba. Papasakosiu apie klaidą, su kuria susidūriau ne kartą: XAMPP nenori startuoti Apache serverio, jei tuo metu yra įjungtas Skype. Reikalas tas, kad jie abu naudoja 80 portą, tai reikia pakeisti Skype nustatymus ir nuimti vieną varnelę:

Jeigu dirbate kitoje aplinkoje nei Windows ar jeigu norite įdiegti kitokį web-serverio paketą, ne problema - darykite, kaip jums patogu. Svarbiausia, kad pakete būtų web-serveris (gali būti net ir ne Apache), PHP ir MySQL.

Pastaba 1. Kaip alternatyvą galima naudoti ir paruoštą web-serverio paketą Homestead - tada savo kompiuteryje turėsite virtualią operacinę sistemą Linux ir jungsitės prie jos vykdyti konsolės komandas. Jei jums taip patogiau - skaitykite Homestead oficialią dokumentaciją diegimui.

Pastaba 2. Ateičiai turėkite omenyje, kad darbo skelbimuose programuotojų dažnai reikalauja LAMP žinių, tai šiuo atveju tai reiškia būtent pilno paketo išmanyma - paskutinės trys raidės reiškia Apache, MySQL ir PHP, o pirmoji "L" reiškia Linux operacinę sistemą: profesionaliems programuotojams neretai tenka per komandinę eilutę bent šiek tiek paadministruoti serverius, kurie dažniausiai veikia Linux arba giminingos operacinės sistemos pagrindu.

 

 

Įrankis 2. Kodo redaktorius arba IDE

Reikia pasirinkti patogų kodo redaktorių ar IDE aplinką. Kadangi šis kursas ne pradedantiesiems ir jau turite šiokią tokią programavimo patirtį, greičiausiai turite ir savo mėgstamą kodo rašymo įrankį.

Aš pats naudoju ir kitiems rekomenduoju PhpStorm, kuris dabar jau tapo beveik standartu PHP projektų kūrimui. Tiesa, jis yra mokamas (99 EUR), bet savo galimybėmis labai greitai sutaupo daug laiko ir atperka tas investicijas.

Jei kalbėti apie alternatyvas, galima paminėti:

  • Sublime Text
  • Eclipse PDT
  • NetBeans
  • Zend Studio
  • Notepad++

Jų palyginimą ir populiarumo apklausos rezultatus galite pažiūrėti Sitepoint svetainėje.

 

Įrankis 3. GIT

Laravel veikimui reikalinga ir versijavimo kontrolės sistema GIT - ji yra populiariausia rinkoje ir nemokama.

Jei dar niekada nenaudojote versijavimo sistemos arba jei naudojote kokią kitą (Mercurial, Subversion ar kt.), ši tema būtų atskiro kurso objektas. Toks kursas yra mūsų PHPPamokos bibliotekoje - Darbas su versijų kontrolės sistema Git.

 

Įrankis 4. Composer

Composer yra gyvybiškai (neperdedu) svarbus šiuolaikiniam PHP programuotojui.

Tai yra įrankis, skirtas susijusių kodo bibliotekų ir klasių valdymui. Nutolkime trumpam nuo Laravel ir įsivaizduokime situaciją, kad jūsų tinklalapis naudoja dalį kodo, parašyto ne jūsų pačių: pvz MailChimp biblioteka el.laiškų siuntimui, Paysera klasė apmokėjimams vykdyti, FPDF paketas PDF failų generavimui. Negi nebūtų smagu turėti įrankį, kuris visada pasirūpintų tų klasių naujausiomis versijomis, galų gale parsiųstų jas automatiškai, kad mums patiems nereikėtų išarchyvuoti ir dėlioti po katalogus. Būtent tam ir buvo sukurtas Composer.

Šis žingsnis yra labai svarbus, nes be Composer negalėsite net įdiegti Laravel, jau nekalbant apie tolimesnį darbą su juo. Composer diegimo procesas gan glaustai aprašytas oficialiame tinklalapyje, bet svarbu ne tik jį įdiegti, bet ir jūsų operacinės sistemos aplinkoje paredaguoti PATH kintamąjį, kad "composer" komandą iš komandinės eilutės galima būtų leisti iš bet kokio katalogo.

 

1.4. Laravel diegimas

Taigi, turime reikalingus įrankius. Jei kažkas iš jų diegimo nepavyko, tuoj pat sustokite ir grįžkite prie praeito skyriaus - Laravel diegimui yra būtini visi išvardinti įrankiai (išskyrus nebent kodo redaktorių - teoriškai galite rašyti kodą ir su Notepad). Paieškokite pagalbos per Google arba užduokite klausimą man arba kolegoms-studentams per formą dešinėje pusėje.

O dabar pats laikas pradėti paties Laravel diegimą. Tai daroma per komandinės eilutės komandą.

Naudinga žinoti: komandinė eilutė

Čia iškart pabrėšiu komandinės eilutės svarbą. Pažįstu daug programuotojų, kurie pripratę viską daryti su vizualiais įrankiais - juk taip patogu ir greitai: nukopijuoji failus, išarchyvuoji ir tada pertempi kur reikia (panašiai diegiami kai kurie kiti frameworkai kaip CodeIgniter). Tai komandinė eilutė, kad ir kaip senamadiškai atrodytų, yra greičiausias būdas atlikti tam tikrus veiksmus su šiuolaikiniais frameworkais. Laravel tai dar dar, bet jei dirbsite su Symfony ar Zend - ten komandinė eilutė taps dar artimesnė draugė. Ir būtent ta linkme eina visas PHP pasaulis, ypač su Composer atsiradimu, tad jei dar nesijaučiate gerai su komandine eilute - pripraskite ir išmokite, nesigailėsite.


Įdomu tai, kad pats Laravel užima labai mažai vietos kompiuteryje - nesiekia ir 1 MB. Bet diegiant susijusius paketus (o be jų frameworkas neveiks), katalogas /vendor išsipučia iki 25 MB. Taigi, pagaliau prie diegimo. Šis veiksmas gali būti padaromas keliais būdais, patogiausia man asmeniškai yra tokia komandinės eilutės komanda:

 

composer create-project laravel/laravel --prefer-dist

Turėkite omenyje, kad Laravel bus parsiųstas į tą katalogą, kuris tuo metu aktyvus komandinėje eilutėje. Kiti variantai yra:

  • Konkrečiai nurodyti, į kokį katalogą parsiųsti:
    composer create-project laravel/laravel laravel --prefer-dist
    Laravel bus įdiegtas į katalogą /laravel (galite pakeisti į savo norimą)
     
  • Parsisiųsti savarankiškai: parsisiųsti Laravel failus iš GitHub, išarchyvuoti ir patalpinti į jūsų norimą katalogą. Tada iš komandinės eilutės paleisti komandą composer install. T.y. keturi veiksmai vietoj vieno.

Jei jums kilo klausimas, ar galima įdiegti Laravel be Composer ir be komandinės eilutės pagalbos, tai teoriškas atsakymas yra taip, bet tada reikės rankomis kopijuoti viso /vendor katalogo turinį pagal composer.json parametrus ir dar kažkokiu mistiniu būdu palaikyti, kad visos reikalingos bibliotekos būtų teisingai susinchronizuotos. Gal ir įmanoma, bet, kaip sakoma, geriau nebandykite to namie.

Siūlyčiau jums įdiegti Laravel į katalogą pavadinimu "laravelcourse", kuris būtų jūsų "htdocs" arba "www" kataloge, priklausomai nuo jūsų web-serverio. Mano XAMPP atveju adresas bus C:/xampp/htdocs/laravelcourse

Ir dabar reikės kiek palaukti, kol Composer parsiųs visas susijusias bibliotekas - tai priklausys nuo interneto greičio ir gali užtrukti nuo keliolikos sekundžių iki poros minučių.

Jeigu visas procesas praėjo gerai, tai paskutinės eilutės turi rodyti kažką tokio:

Jei šitame etape kažkas vyksta ne pagal planą, toliau žengti negalite - reikia išsiaiškinti ir ištaisyti klaidas. Paskaitykite Composer ir jūsų web-serverio dokumentaciją, o jeigu tai nepadės - rašykite, padėsiu.

Taigi, jei Laravel įdiegtas sėkmingai - turėtų būti susikūręs katalogas "laravelcourse" su tokiais failais ir katalogais viduje:

O dabar išbandykite, ar viskas tvarkoje web-serverio atžvilgiu: naršyklėje užeikite į http://localhost/laravelcourse/public:

Taip, jūs matote užrašą Laravel - šis vaizdas reiškia kad diegimas pavyko.

Pastaba 1. atkreipkite dėmesį, kad naršyklėje kraunamas katalogas /public - rašome ne http://localhost/laravelcourse, o http://localhost/laravelcourse/public. Kodėl būtent taip ir kaip tai atrodo realiuose projektuose nutolusiuose serveriuose - kalbėsime vėliau.

Pastaba 2. toliau visose pamokose adresus nurodysiu pagal savo lokalų web-serverio katalogą, taigi visur bus http://localhost/laravelcourse/[kažkas], kas atitinka mano kompiuteryje katalogą C:/xampp/htdocs/laravelcourse. Jeigu jūs įdiegėte Laravel į kitokį katalogą, turėkite tai omenyje viso kurso metu - pakeiskite mano nurodomas nuorodas į savąsias.

 

Pamokos apibendrinimas

Valio - pirmoji pamoka įveikta, nusipelnėte poilsio!

Ką išmokote šioje pamokoje:

  • Sužinojote, kas yra Laravel ir su kuo jis valgomas;
  • Prisiminėte (arba išmokote), kas yra Composer ir GIT
  • Paruošėte šiam kursui reikalingus įrankius;
  • Įdiegėte patį Laravel ir paleidote savo pirmą puslapį
 

Namų darbai

Nustebote? Taip taip, šiame kurse bus užduodami realūs namų darbai, kuriuos turėtumėte atlikti iki kitos pamokos pradžios. Maža to, po jų atlikimo bus paruoštas testas, kur pasiaiškinsime, ar tikrai išmokote pamoką ir ar padarėte namų darbus.

Taigi, ką turite atlikti iki kitos pamokos:

  • Pabandykite parsiųsti Laravel visais keturiais aprašytais būdais - į aktyvų katalogą, į iš anksto nurodytą katalogą, parsiunčiant archyvą ir su Laravel Install. Kuris būdas pasirodė patogesnis?
  • Paskaitykite apie composer.json failo struktūrą (gali tekti prisiminti/išmokti, kas yra JSON), tada atidarykite pagrindiniame kataloge esantį composer.json ir panagrinėkite, nuo kokių bibliotekų yra priklausomas Laravel
  • Pabandykite pakeisti katalogo "/public" pavadinimą ir užkraukite naršyklėje http://localhost/laravel/[naujas_pavadinimas] - ar vis dar matote "Laravel 5"?

Na, o kai atlikote namų darbus, pats laikas testui!

 

Pamokos testas

Dėmesio - SVARBU: testą galima spręsti tik VIENĄ KARTĄ, vėliau pažymio ištaisyti nebus įmanoma.

1. Kokia yra naujausia Laravel versija?
Laravel 6
Laravel 4
Laravel 3
Laravel 5

2. Kaip vadinasi PHP įrankis bibliotekoms valdyti?
Compositor
Composer
Compass
Composter

3. Kai vykdoma komanda "composer install", iš kokio failiuko imama pagrindinė informacija apie tai, kokias bibliotekas diegti?
composer.xml
composer.php
composer.json
composer.txt

4. ORM yra įrankis skirtas darbui su:
Laravel
Duomenų bazėmis
Composer
Web-serveriu

5. Abbreviatūroje LAMP ką reiškia raidė L?
Laravel
Level
Lock
Linux

6. Kiek vietos kompiuteryje užima "švarus" įdiegtas Laravel, neskaitant "/vendor" katalogo?
10-12 MB
5-7 MB
iki 1 MB
2-3 MB

7. Komanda "composer create-project laravel/laravel composer --prefer-dist" įdiegs Laravel į kokį katalogą?
/laravel/laravel
/laravel
/prefer-dist
/composer

8. Kurio katalogo nėra pagrindiniame Laravel kataloge po diegimo?
bootstrap
vendor
app
public_html

9. Be kokio iš šitų įrankių įmanoma lokaliai įdiegti Laravel?
Web-serverio
Composer
Kodo redaktoriaus
Visi šie trys privalomi diegimui

10. Ar įmanoma sėkmingai įdiegti Laravel ne iš komandinės eilutės?
Ne, neįmanoma
Taip, bet tik registruotiems Laravel vartotojams
Taip, bet labai nepatogu
Taip, jei turite GitHub vartotoją