Jeg må innrømme: På et tidspunkt følte jeg meg litt ned på PHP-språket. En rekke gripende PHP-hate-artikler sirklet på nettet som et virus, og noen av dens flaggskipsrammer, som CodeIgniter, ble raskt voksende foreldet. Ruby on Rails syntes hele tiden å lede pakken med hensyn til innovasjon og enkel utvikling. Etter hvert som tiden var på, fant jeg meg selv å nå frem til min Ruby verktøylinje mer og mer.
Men da oppdaget jeg en ny, elegant ramme, kalt Laravel. Først avviste jeg det som en annen Sinatra klone som raskt ville redusere til ingenting, da ledende utvikler forlatt det. Men likevel, hver uke, var de sosiale nettverkene mine i rov, og roste Laravels lesbarhet. "Kan det være," tenkte jeg på meg selv, "at PHP endelig har et virkelig moderne rammeverk?"
Lær mer om Laravel på http://laravel.com
Ikke lenger var jeg villig til å sitte på sidelinjen; Det var på tide å grave inn. Et år senere, og jeg er en av de største evangelister. Laravel gjør faktisk PHP morsomt igjen! Enda bedre tror jeg ikke lenger at PHP er for alltid dømt til hovedsakelig personlige nettsteder og stygge WordPress-blogger. Nei; Faktisk er det denne forfatterens tro på at takket være Laravel, Composer og PHP 5.5, er vi i ferd med å oppleve den neste renessansen av nettets mest populære server-side språk.
For å installere den nyeste utviklingsversjonen av Laravel (v4), må du først installere Komponist. Deretter klone bare repoen, og installer avhengighetene.
git klon git: //github.com/illuminate/app.git myApp
ogkomponent installasjon
. Du er klar til å gå!
De fleste PHP-utviklere starter reisen ved å neste utallige linjer med SQL direkte inn i deres frigid, ulæselige PHP. Unødvendig å si, unntatt de mest grunnleggende av nettsteder, fører dette raskt til et uoppnåelig rot.
Husk da du først hørte om Ruby on Rails 'ActiveRecord? Vel, i PHP-enden av verden er Eloquent den fremste implementeringen.
Trenger noen eksempler?
// Hent alle oppgaver $ tasks = Oppgave :: alle (); // Hent oppgaven med et ID på 1 $ oppgave = Oppgave :: finn (1); // Oppdater en oppgave $ task = Oppgave :: finn (1); $ task-> title = 'Sett denne informasjonen ned!'; $ Oppgave-> Lagre (); // Opprett en ny oppgave Oppgave :: opprett (['title' => 'Skriv artikkel']); // Slett en oppgave Oppgave :: finn (1) -> slett ();
Folk, det er ikke mulig å skrive mer lesbar kode i PHP! Nå ville det være en ting hvis Eloquent bare tillot deg å utføre grunnleggende CRUD-operasjoner på et bord, men det er absolutt ikke tilfelle.
Vurder tabellrelasjoner, for eksempel en bruker og hans / hennes respektive oppgaver. I Laravel, etter å ha satt en rask oppslagsmetode for hver modell, kan vi enkelt håndtere ett-til-ett-forhold, eller en forening for den saks skyld. Her er noen eksempler på å appetitere.
// Få alle oppgaver av forfatteren med et ID på 1 $ oppgaver = Bruker :: finn (1) -> oppgaver; // Få forfatteren av en oppgave $ author = Oppgave :: finn (5) -> bruker () -> brukernavn; // Sett inn en ny oppgave av forfatter $ task = ny oppgave ([tittel: 'Gå til butikk.']); Bruker :: finne (1) -> oppgaver () -> Sett ($ oppgave);
Det er ikke en strekk å vurdere Eloquent å være den beste ActiveRecord-implementeringen i PHP-språket.
Installer Komponist.
Begynn med Laravel 4 (for tiden i Alpha), vil hele rammen bli modulert og tilgjengelig som individuelle Composer-pakker.
Komponist er et pakkesystem for PHP som ligner PEAR, men bedre. Det gjør prosessen med avhengighetsstyring så enkelt som mulig.
Tenk på det eksisterende rammeverkets økosystem. Akkurat nå er du tvunget til å leve med hver rammeverkets kjernesett av funksjoner. Du kan ikke velge å si, bruk Eloquent i en CakePHP-applikasjon. Som du kan forestille deg, har denne sannheten ført til en vanvittig prosess med å gjenoppfinne hjulet igjen og igjen ... og over.
Damer og herrer, fremtiden for PHP er en modulær. Hvorfor installere en oppblåst, massiv ramme, når du bare trenger noen av sine tilbud? Vel, snart må du ikke. Bare krever Eloquent i et enkelt prosjekt? Fine - ikke et problem i det hele tatt! Bare installer den gjennom Composer, og fortsett!
Så, hvis vi flytter til en mer pakkebasert, modulær PHP-verden, hvordan passer Laravel inn? Vel, tenk på det som en forhåndsbestemt samling av pakker, pakket inn i en bue! Enda bedre, bør du oppdatere til den nyeste versjonen av rammen, det er like enkelt som å løpe komponistoppdatering
.
Som et eksempel på fleksibiliteten som dette gir, la vi legge til det populære Mockery testing-biblioteket til en Laravel-applikasjon. Begynn med et nytt Laravel 4-prosjekt, og rediger det composer.json
fil for å kreve Mockery.
"belyser / grunnlegger": "> = 1.0.0", "hån / mockery": "dev-master", "autoload": "classmap": ["app / controllers" app / modeller "," app / database / migrasjoner "," app / tester / TestCase.php "]
Se Packagist.org for en liste over tilgjengelige Composer-pakker, samt installasjonsinstruksjoner.
Nå som vi har informert Komponisten om at vår søknad krever Mockery, kan vi installere de aktuelle avhengighetene.
komponistoppdatering
Og det er det! Vi kan nå bruke Mockery i våre tester. Dette er kraften til Composer og Laravel 4 på jobb! Vi har hjul; la oss slutte å lage nye! Hundrevis av hundrevis av pakker er tilgjengelige gjennom Packagist.org.
Hundrevis av hundrevis av pakker er tilgjengelige gjennom Packagist.org.
ruter
De fleste begynnelsen PHP-utviklere er ikke kjent med noe annet enn det mest naturlige av rutesystemene. Opprett et katalogtreet for å matche ønsket URI, og fortsett. For eksempel, legg til en
index.php
fil til følgende katalog:blog / admin /
, og nå kan du få tilgang til det ved å bla til:localhost: 8888 / blogg / admin / index.php
. Lett! Vel, kanskje i begynnelsen; men du vil sikkert finne ut at du trenger mer fleksibilitet og kontroll over hvilken rute som utløses i søknaden din.Laravel tar en utrolig enkel og brukervennlig tilnærming til ruting. For eksempel, la oss skrive den nødvendige ruten for å vise en visning for en brukers profil.
Rute :: få ('brukere / id', funksjon ($ id) // finn brukeren $ user = Bruker :: finn ($ id); // visningsvisning ('users.profile') -> med ('bruker', $ bruker););Nå, når en bruker ber om det
example.com/users/1
, debrukere / profile.php
visning vil bli gjengitt.Alternativt kan vi bruke tradisjonelle kontrollere til å håndtere logikken.
Rute :: få ('brukere / id', 'Brukere @ show');Nå,
Controllers / Users.php
vil være ansvarlig for å gjengi visningen - spesieltvise fram
metode.med ('bruker', $ bruker);
Enkel godkjenning
Nesten alle webapplikasjoner av substans vil kreve noen form for godkjenning. Laravel gir et enkelt, men lett å bruke grensesnitt for autentisering av brukere.
Begynn med å opprette en
brukere
bord med de nødvendige feltene forbrukernavn
ogpassord
. Husk: Dette er et perfekt brukskasse for en migrering!Laravel kan da
forsøk
for å logge inn en bruker - sannsynligvis basert på brukeroppførte verdier fra et skjema.Her er et grunnleggende eksempel, minus valideringsaspektet.
Rute :: post ('innlogging', funksjon () $ credentials = array ('brukernavn' => Input :: get ('brukernavn'), 'passord' => Input :: få ('passord')); / / utfør validering hvis (Auth: forsøk ($ credentials)) // Referanser matcher. Logget inn! returnere Omdirigering :: til ('admin / profil'););Merk at, bak kulissene, vil Laravel automatisk ha det oppgitte passordet, og sammenligne det med det som er lagret i
brukere
bord.Forutsatt at brukerens legitimasjon samsvarer, blir bruker-IDen lagret i økten, og brukeren vil bli logget inn. På etterfølgende forespørsler kan du hente brukernavnet som er logget inn for øyeblikket med:
$ user = Auth :: user () -> brukernavn;
Sende e-post
Innrøm det: sende e-post gjennom søknaden din er alltid mer komplisert enn det burde være. Ikke lenger i Laravel 4!
Bygget på toppen av den populære SwiftMailer-pakken, finner du nå en ny
config / mail.php
filen i søknaden din. Her kan du angi de nødvendige legitimasjonene til e-postleverandøren din. Her er en avkortet versjon av hva du finner:'smtp.example.com', 'port' => 2525, 'fra' => array ('adresse' => null, 'navn' => null), 'encryption' => 'tls', 'brukernavn' = > null, 'passord' => null,);Bare erstatt verdiene med de fra e-postserveren din, tilsvarende.
Deretter trenger vi en visning for e-posten. La oss lage en, kalt
welcome.blade.php
, som vil bli brukt når et nytt medlem registrerer seg for vår Justin Bieber-fanside.Hei der, $ user-> name. Takk igjen for å registrere deg for de siste Justin Bieber-nyhetene! Vi ser frem til å se deg rundt. Takk, ledelsen