Jag måste erkänna: På en punkt kände jag mig lite lite på PHP-språket. Ett antal gripande PHP-hatartiklar cirklade på webben som ett virus, och några av dess flaggskeppsramar, som CodeIgniter, växte snabbt inaktuellt. Under tiden tycktes Ruby on Rails vara ledande förpackningen, vad gäller innovation och enkel utveckling. När tiden gick på, fann jag mig själv att nå min Ruby verktygsbälte mer och mer.
Men då upptäckte jag en dag en ny elegant ram kallad Laravel. Först avsked jag det som en annan Sinatra klon som snabbt skulle minska till ingenting, som ledande utvecklare övergav det. Men fortfarande, vecka efter vecka, var mina sociala nätverksflöden i skymt och prisade Laravels läsbarhet. "Kan det vara," tänkte jag själv, "att PHP äntligen har en verkligt modern ram?"
Läs mer om Laravel på http://laravel.com
Jag var inte längre villig att sitta i sidled; Det var dags att gräva in. Ett år senare, och jag är en av sina största evangelister. Laravel gör faktiskt PHP kul igen! Ännu bättre tror jag inte längre att PHP för alltid är dömt till mestadels personliga webbplatser och fula WordPress-bloggar. Nej; Det är faktiskt den här författarens tro på att tack vare Laravel, Composer och PHP 5.5, är vi på väg att uppleva nästa renässans av webens mest populära serversida.
För att installera den senaste utvecklingsversionen av Laravel (v4) måste du först installera Kompositör. Sedan klonar du enkelt repo och installerar beroenden.
git klon git: //github.com/illuminate/app.git myApp
ochkompositör installera
. Du är redo att gå!
De flesta PHP-utvecklare börjar sin resa genom att näsa otaliga rader av SQL direkt i deras fria, oläsliga PHP. Det är självklart att, med undantag för de mest grundläggande webbplatser, leder detta snabbt till en oförlåtlig röra.
Kom ihåg när du först hörde om Ruby on Rails 'ActiveRecord? Tja, i PHP-slutet av världen är Eloquent det främsta genomförandet.
Behöver några exempel?
// Hämta alla uppgifter $ tasks = Uppgift :: alla (); // Hämta uppgiften med ett ID på 1 $ task = Uppgift :: hitta (1); // Uppdatera en uppgift $ task = Uppgift :: hitta (1); $ task-> title = 'Lägg den cookien ner!'; $ Uppgifts-> Spara (); // Skapa en ny uppgift Uppgift :: skapa (['title' => 'Skriv artikel']); // Ta bort en uppgift Uppgift :: hitta (1) -> ta bort ();
Folk, det är inte möjligt att skriva mer läsbar kod i PHP! Nu skulle det vara en sak om Eloquent bara fick dig att utföra grundläggande CRUD-operationer på ett bord, men det är verkligen inte fallet.
Tänk på tabellrelationer, till exempel en användare och hans / hennes respektive uppgifter. I Laravel kan vi enkelt hantera ett-till-ett-förhållande, eller någon förening för den delen, efter att ha fastställt en snabb uppslagsmetod för varje modell. Här är några exempel för att få din aptit.
// Få alla uppgifter av författaren med ett ID på 1 $ tasks = User :: find (1) -> tasks; // Få författaren till en uppgift $ author = Uppgift :: hitta (5) -> användarnamn () -> användarnamn; // Infoga en ny uppgift av författaren $ task = ny uppgift ([title: 'Go to store.']); Användare :: hitta (1) -> uppgifter () -> Infoga ($ uppgift);
Det är inte en sträcka att överväga Eloquent att vara den bästa ActiveRecord-implementeringen på PHP-språket.
Installera kompositör.
Från och med Laravel 4 (för närvarande i Alpha) kommer hela ramverket att moduleras och bli tillgängligt som enskilda Kompositörspaket.
Kompositör är ett förpackningssystem för PHP som liknar PEAR, men bättre. Det gör processen för beredskapsförvaltning så lätt som möjligt.
Tänk på det befintliga rammekosystemet. Just nu är du tvungen att leva med varje rams kärnsätt med funktioner. Du kan inte välja att säga, använd Eloquent i en CakePHP-applikation. Som du kan föreställa dig, har denna sanning ledt till en galen process att återuppfinna hjulet om och om igen ... och över.
Damer och herrar, framtiden för PHP är en modulär. Varför installera en uppblåst, massiv ram, när du bara behöver några av sina erbjudanden? Nå, snart behöver du inte. Behöver bara Eloquent i ett enkelt projekt? Bra - inget problem alls! Installera det helt enkelt via Kompositör och fortsätt!
Så, om vi flyttar till en mer paketbaserad, modulär PHP-värld, hur passar Laravel in? Tja om det som en förutbestämd samling av paket, insvept i en båge! Ännu bättre, om du behöver uppdatera till den senaste versionen av ramverket är det lika enkelt som att springa kompositör uppdatering
.
Som ett exempel på den flexibilitet som detta ger, lägger vi till det populära Mockery-testbiblioteket i en Laravel-applikation. Börja med ett nytt Laravel 4-projekt och redigera dess composer.json
fil att kräva Mockery.
"illuminera": "belysa / grunda": "> = 1.0.0", "hån / mockery": "dev-master", "autoload": "klasskarta" app / modeller "," app / databas / migreringar "," app / test / TestCase.php "]
Se Packagist.org för en lista över tillgängliga Kompositörspaket samt installationsanvisningar.
Nu när vi har informerat Composer om att vår ansökan kräver Mockery, kan vi installera tillämpliga beroenden.
kompositör uppdatering
Och det är allt! Vi kan nu använda Mockery inom våra test. Detta är kraften hos Composer och Laravel 4 på jobbet! Vi har hjul; låt oss sluta skapa nya! Hundratals hundratals paket finns tillgängliga via Packagist.org.
Hundratals hundratals paket finns tillgängliga via Packagist.org.
rutter
De flesta början PHP-utvecklare är inte bekanta med något annat än det mest naturliga av ruttsystem. Skapa ett katalogtree för att matcha önskad URI och fortsätt. Till exempel lägg till en
index.php
fil till följande katalog:blog / admin /
, och nu kan du komma åt det genom att bläddra till:localhost: 8888 / blog / admin / index.php
. Lätt! Tja, kanske först men du kommer troligen att finna att du behöver mer flexibilitet och kontroll över vilken rutt som utlöses i din ansökan.Laravel tar en otroligt enkel och lättanvänd metod för routing. Till exempel, låt oss skriva den nödvändiga rutten för att visa en vy för en användares profil.
Rutt :: get ('users / id', funktion ($ id) // hitta användaren $ user = Användare :: hitta ($ id); // visningsvy och skicka tillbaka användarobjekt Visa :: göra ('users.profile') -> med ('användare', $ användare););Nu när en användare begär
example.com/users/1
, deanvändare / profile.php
vyn kommer att göras.Alternativt kan vi använda traditionella controllers för att istället hantera logiken.
Rutt :: get ('users / id', 'Users @ show');Nu,
Controllers / Users.php
kommer att ansvara för att visa vyn - specifiktshow
metod.med ("användare", $ användare);
Enkel autentisering
Nästan alla webbansökningar av ämnet kommer att kräva någon form av autentisering. Laravel ger ett enkelt men lättanvänt gränssnitt för autentisering av användare.
Börja med att skapa en
användare
bord med nödvändiga fält förAnvändarnamn
ochLösenord
. Kom ihåg: det här är ett perfekt användningsfall för migrering!Laravel kan då
försök
att logga in på en användare - antagligen baserat på användarvärden från ett formulär.Här är ett grundläggande exempel, minus valideringsaspekten.
Rutt :: post ("inloggning", funktion () $ credentials = array ('användarnamn' => Input :: get ('användarnamn'), 'lösenord' => Ingång :: få ('lösenord')); / utföra validering om (Auth :: försök ($ credentials)) // Referenser matchar. Logga in! returnera Omdirigera :: till ('admin / profil'););Observera att Laravel automatiskt bakom kulisserna kommer att ha det angivna lösenordet automatiskt och jämföra det med vad som lagras i
användare
tabell.Om du antar att användarens referenser matchar, kommer användarnamnet att sparas i sessionen och användaren kommer inloggad. Vid efterföljande förfrågningar kan du få tag i användarnamnet som är inloggad för användaren med:
$ user = Auth :: user () -> användarnamn;
Skickar e-post
Godkänn det: Skicka e-post via din ansökan är alltid mer komplicerat än det borde vara. Inte längre i Laravel 4!
Byggd ovanpå det populära SwiftMailer-paketet, hittar du nu en ny
config / mail.php
filen i din ansökan. Här kan du ange nödvändiga referenser till din e-postleverantör. Här är en avvecklad version av vad du hittar:'smtp.example.com', 'port' => 2525, 'från' => array ('adress' => null, 'namn' => null), 'kryptering' => 'tls', 'användarnamn' = > null, 'password' => null,);Byt bara ut värdena med de från din e-postserver, i enlighet med detta.
Därefter behöver vi en vy för e-postmeddelandet. Låt oss skapa en, kallad
welcome.blade.php
, som kommer att användas när en ny medlem registrerar sig på vår Justin Bieber-fans webbplats.Hej där, $ user-> name. Tack igen för att anmäla dig till de senaste Justin Bieber-nyheterna! Vi ser fram emot att träffa dig. Tack, ledningen