Utvecklingen av webbapplikationer och webbplatser har blivit allt enklare under de senaste åren. Även de mest otekniska personerna ibland oss har blivit ganska skickliga med produkter som WordPress och Wix.

För den mer avancerade utvecklaren finns det en mängd verktyg för att förenkla utvecklingsprocessen. Ett av de mest användbara verktygen är Laravel.

Den här artikeln svarar på frågan ”Vad är Laravel?” genom att ge en översikt över grunderna i de PHP-ramverk som används i webbutveckling. Efter detta kommer en översikt över funktionerna i Laravel, en lista över de viktiga strukturerna och komponenterna i Laravel och en beskrivning av några av de mer användbara Laravel-paketen.

Vad är Laravel?

Det enkla svaret på frågan, ”Vad är Laravel?” är enkelt: Laravel är ett plattformsoberoende PHP-ramverk för att bygga webbapplikationer.

Men för att verkligen förstå fördelarna med Laravel och dess användning krävs det att man dyker djupare. Laravel gör det möjligt för en utvecklare att dra nytta av ett stort bibliotek med förprogrammerade funktioner (exempelvis autentisering, routning och HTML-templating). Åtkomst till det här biblioteket gör det enklare att snabbt skapa robusta webbprogram samtidigt som den mängd kodning som behövs minimeras.

Laravel erbjuder en mycket funktionell utvecklingsmiljö samt intuitiva och uttrycksfulla kommandoradsgränssnitt. Dessutom använder Laravel objektrelationsmappning (ORM) för enklare dataåtkomst och manipulering.

Laravel-applikationer är mycket skalbara och har kodbaser som är enkla att underhålla. Utvecklare kan även sömlöst lägga till funktionalitet i sina applikationer tack vare Laravels modulära förpackningssystem och robusta hantering av dependencies.

Är Laravel Frontend eller Backend?

Laravel är främst ett backend-utvecklingsramverk, även om det erbjuder en viss frontend-funktionalitet. Många av Laravels funktioner är dock frontend-specifika.

Är Laravel ett programmeringsspråk?

Laravel är ett PHP-ramverk som använder ett skriptspråk snarare än ett strikt PHP-programmeringsspråk. Även om skriptspråk och programmeringsspråk är relaterade, har de flera märkbara skillnader, främst när det gäller användarvänlighet och körningshastighet.

Skriptspråk är plattformsspecifika, tolkade språk. Programmeringsspråk är däremot plattformsoberoende, kompilerade språk. Eftersom skriptspråken är plattformsspecifika förlitar de sig på kompilatorn för det program där de arbetar.

Program som skapats med skriptspråk kompileras vid körning, vilket innebär att varje instruktion tolkas individuellt vid körning. Detta gör programmet långsammare än ett förkompilerat program. Körningskompilering resulterar även i att programmet stoppas eller stängs av om det uppstår ett körningsfel. Förkompilerade program utför däremot endast felkontroll under kompileringen, vilket gör dem mer robusta vid körning. För många användare vägs dock nackdelarna med skriptspråk upp av användarvänlighet och iteration.

Vad är ett PHP-ramverk?

PHP (en rekursiv akronym för PHP Hypertext Preprocessor) är ett skriptspråk med öppen källkod på serversidan som ofta används för webbutveckling. I början av 2021 använder nästan 80% av alla webbplatser PHP. Även om många kanske inte är bekanta med PHP, är alla bekanta med en av de mest kända PHP-applikationerna – WordPress.

Ett PHP-ramverk har en uppsättning kodbibliotek som innehåller förprogrammerade moduler som gör det möjligt för en användare att bygga applikationer snabbare. Detta ger webbutvecklare ett antal fördelar, inklusive snabbare utveckling, ett minskat behov av att skriva kod och förbättrad säkerhet. Det hjälper även nya utvecklare att skapa bra kodningsmetoder, eftersom de kräver en specifik organisering av kod. Dessutom kräver PHP-ramverk vanligtvis mindre underhåll än applikationer som är byggda från grunden.

Många moderna PHP-ramverk är objektorienterade. På grund av detta är det fördelaktigt att ha en grundläggande förståelse för begrepp som klasser, objekt och inheritance innan du dyker in i ett ramverk.

Ett MVC-diagram. (Källa: Wikipedia)
Ett MVC-diagram. (Källa: Wikipedia)

PHP-ramverk använder en MVC-arkitektur (Model-View-Controller). För dem som inte känner till MVC-arkitekturen är modellen data för programmet, tillsammans med all associerad logik. En tabell med prenumeranter kan exempelvis vara en modell. Vyn ger en interaktionspunkt med en användare, där data från modellen kan visas och ändras. Styrenheten är en kanal mellan vyn och modellen. Styrenheten tar med andra ord användarbegäranden, hämtar den nödvändiga informationen från modellen, bearbetar den och returnerar den till vyn.

PHP-applikationer, exempelvis WordPress, har några kända sårbarheter. De mest anmärkningsvärda exemplen är kodinjektion och SQL-injektion. Laravel innehåller funktioner som hjälper till att förhindra SQL-injektion och andra attacker.

Utvecklare bör dock göra ytterligare ansträngningar, exempelvis penetrationstestning, för att säkerställa säkerheten för sina program. Enligt IT-experten Barbara Ericson på Cloud Defense består webbapplikationssäkerhet av både penetrationstestning och brandväggar för webbapplikationer, de går hand i hand.

Penetrationstester är avsedda att vara mer komplexa tester som utförs av kvalificerad cybersäkerhetspersonal, som kommer att försöka bryta sig in i ditt system utan förkunskaper om dess utveckling för att identifiera ouppdaterade säkerhetsproblem.

Varför ska du använda Laravel?

Efter att ha svarat på ”Vad är Laravel?”, är nästa fråga, ”Varför Laravel?” Laravel tillhandahåller en stor uppsättning robusta verktyg som hjälper till att göra webbapputvecklingsprocessen enklare och snabbare, och de slutliga programkodbaserna är välstrukturerade och enkla att underhålla.

Några av de specifika fördelarna med Laravel är:

Laravel är enkelt att lära sig

Laravel är relativt enkelt att lära sig, med rätt bakgrund. Laravel kräver en allmän förståelse för PHP och objektorienterade programmerings (OOP)-koncept för effektiv användning. Det är även bra att kunna lite HTML. För alla MVC-arkitekturer är det även bra att förstå relationsdatabashanteringssystem, exempelvis MySQL eller PostgreSQL.

Laravel förenklar utvecklingsprocessen

Från början utformades Laravel för att förenkla uppgifter som är vanliga i en mängd olika webbutvecklingsprojekt som routning, autentisering, migrering, cachelagring och mycket mer. Laravel gör det enkelt att integrera förgjorda moduler i ett program med intuitiva och uttrycksfulla kommandoradsgränssnitt och en Composer.

Laravel har även en omfattande samling av onlinedokumentation, vilket är en bra utgångspunkt för mer erfarna utvecklare. Det finns även tillgängliga ett brett utbud av online-inlärningsresurser som är riktade till alla färdighetsnivåer.

Laravel har verktyg för utvecklare på alla nivåer

Laravel beskriver sig själv som ett progressivt ramverk, vilket innebär att det innehåller en mängd olika funktioner som användare på alla nivåer kommer att finna användbara. Nybörjare har exempelvis tillgång till startpaket för moduler som grundläggande autentiseringsfunktioner. Många av dessa verktyg diskuteras mer detaljerat nedan.

Laravels projektstruktur. (Källa: ITSolutionStuff.com)
Laravels projektstruktur. (Källa: ITSolutionStuff.com)

Mer erfarna användare kan dra nytta av motorerna som ligger till grund för startsatserna för att bygga sina egna autentiseringsprocesser och integrera dem med sina föredragna frontends.

Laravel vågar vara enkelt

Laravel är mycket skalbart. Med integrerat stöd för snabba, distribuerade cachesystem kan Laravel-applikationer hantera miljontals begäranden per månad. Laravel erbjuder även en serverlös distributionsplattform, Vapor, som är baserad på AWS och ger en hög grad av skalbarhet.

Laravel har ett massivt ekosystem och community

Laravel har ett enormt ekosystem som stöds av ett stort community av utvecklare. Eftersom Laravel är ett av de mest använda PHP-ramverken är biblioteket med tillgängliga Laravel-applikationer och paket betydande. Både officiella Laravel-paket och tredjepartspaket är lättillgängliga.

Laravels officiella paket (varav många diskuteras nedan) inkluderar autentisering, serverhantering, prenumerationsfakturering, webbläsartestning, automatisering med mera. Tredjepartspaket finns på ett antal webbplatser, inklusive Packalyst och Laravel News.

Det finns även en enorm mängd information tillgänglig från Laravel´s utvecklarcommunity. Utvecklare med frågor kommer garanterat att hitta ett svar genom att besöka ett av de många Laravel-forumen, som Laravel.io, Laravel subreddit och Laracasts.

Laravel används vitt och brett

Många företag använder Laravel för byggandet av väldigt funktionella webbplatser:

Vacations by Rail är en planering för tågresor som byggs med Laravel PHP-ramverket. Det är även integrerat med bokningsmotorn i Softrip.

Vacations by Rail använder Laravel under huven.
Vacations by Rail använder Laravel under huven.

Även Setapp-webbplatsen för utvalda appar för Mac och iOS är byggt med Laravel PHP-ramverket.

SetApp är byggt med Laravel.
SetApp är byggt med Laravel.

Restaurants.com restaurangsökningsapplikation är mycket intuitiv att använda, tack vare det faktum att den är byggd med Laravel´s mobilappmallar.

Restaurants.com drivs av Laravel.
Restaurants.com drivs av Laravel.

Vad gör Laravel?

Laravels funktionsuppsättning är alldeles för omfattande för att gå igenom helt i denna korta översikt. Några av de mer betydande funktionerna inkluderar:

Rutthantering

Laravel erbjuder en enkel och intuitiv rutthantering med enkla namn för att identifiera rutter snarare än långa sökvägsnamn. Användningen av flödesidentifierare gör det också enklare att underhålla program, eftersom flödesnamnet kan ändras på ett ställe i stället för att behöva ändras överallt. Alla webbgränssnittsvägar i ett Laravel-program är registrerade i routes/web.php-filen.

Säkerhet

Laravel innehåller ett antal säkerhetsfunktioner, inklusive användarauktorisering, användarrollauktoriseringar, e-postverifiering, krypteringstjänster, lösenords-hashing och lösenordsåterställningsfunktioner.

Migrering

Laravel tillhandahåller versionskontroll för programdatabaser med hjälp av migreringar. Migreringar spårar hur en databas har ändrats med tiden, vilket gör det enklare att förstöra eller återskapa databasen vid behov.

Mallbyggande

Blade är Laravels motor för PHP-mallbyggande. Motorer för PHP-mallbyggande hjälper till att dela affärslogik från HTML-mallbyggande, vilket resulterar i en kodbas som är lättare att underhålla. Många av funktionerna i Laravel förlitar sig på Blade-mallar. Blade erbjuder mer funktionalitet än andra mall-motorer eftersom Blade tillåter användning av vanlig PHP-kod.

Sessioner

Laravel använder sessioner för att lagra information om användaren över flera begäranden. Cookies är ett exempel på en inbyggd Laravel-sessionsdrivrutin.

Dataverifiering

Laravel gör det enkelt att validera inkommande användardata. Laravel innehåller ett antal dataverifieringsregler, med anpassningsbara felmeddelanden.

Cachehantering

Laravel stöder datacachelagring för att minimera bearbetningstider för programuppgifter. Laravels cache-API stöder en mängd olika cache-backends från tredje part som Memcached och Redis.

Felhantering

Felhantering konfigureras automatiskt när ett nytt Laravel-projekt startas. Laravel-applikationer kan köras i felsökningsläge, vilket genererar detaljerade felmeddelanden om alla fel som uppstår.

Testning

Laravel erbjuder betydande teststatistik direkt vid installation. Laravel stöder enhetstestning, som testar små, isolerade delar av programkoden, samt funktionstestning, som testar större delar av kod och funktionalitet på högre nivå.

Lagring och filhantering

Laravel använder Flysystem PHP-paketet för att tillhandahålla drivrutiner som kan arbeta med en mängd olika filsystem, från lokala filsystem till molnbaserad lagring som Amazon S3. Laravel tillhandahåller även filöverföring med SSH File Transfer Protocol (SFTP).

E-post

Laravel innehåller ett e-post API som är baserat på SwiftMailer-biblioteket, vilket gör det möjligt att skicka e-post via en valfri tjänst. Laravel stöder e-postbilagor och e-postköer.

Meddelanden

Laravel stöder ivägskickande av meddelanden via ett antal kanaler, oavsett om det är välkända kanaler som SMS eller Slack, eller kanaler som har utvecklats av Laravel-communityn.

Hur fungerar Laravel?

För att bäst förstå vad Laravel kan göra är det viktigt att förstå hur Laravel hanterar begäranden, det vill säga begärandens livscykel. Som vi nämnde ovan baseras Laravel på MVC-arkitektur och svarar på begäranden från användare, som styrenheten använder för att hämta och bearbeta data från modellen och presentera informationen för användaren i en vy.

En begäran anger ett Laravel-program via filen public/index.php, som läser in resten av ramverket och hämtar en instans av Laravel-applikationen. När applikations-instansen har hämtats dirigeras begärandet till konsolkärnan eller HTTP-kärnan.

Utöver andra uppgifter definierar kärnan ett urval av bootstrappers som utför uppgifter som måste slutföras innan begärandehantering sker, samt definierar alla mellanapplikationer som begäranden måste passera innan hantering. En av dessa förhanteringsuppgifter är bland annat att läsa in alla tjänsteleverantörer som krävs för programmet.

När bootstrapping är klar och tjänsteleverantörer har registrerats skickar begärandet till routern, som sedan dirigerar begärandet till en rutt eller till en styrenhet. Routern kör dessutom alla nödvändiga ruttspecifika mellanapplikationer. När begärandet har gått igenom alla nödvändiga mellanapplikationer returnerar körningen av en rutt- eller styrenhetsmetod ett svar som går tillbaka genom kedjan till vyn.

Hur kommer du igång med Laravel?

För att börja med Laravel är det nödvändigt att förstå några av de viktigaste strukturerna och funktionerna.

Service-containers

Service-containern är en av kärnkomponenterna i Laravel. De hanterar klass-dependencies och dependency-injektioner.

Laravel´s servicecontainrar. (Källa: Christopher Rumpel)
Laravel´s servicecontainrar. (Källa: Christopher Rumpel)

Service-containers är platserna där en utvecklare binder allt som behövs för att köra ett Laravel-program.

Tjänsteleverantörer

Lika viktiga är Laravels tjänsteleverantörer, där klasser och dependencies injiceras i servicecontainrarna.

Fasader

En fasad är ett statiskt gränssnitt för klasser som är bundna i service-containern. Fasader skapar användarvänlighet genom att ge en enkel och minnesvärd syntax som proxy för ett långt klassnamn.

Paket

Det är via paket som funktionalitet läggs till Laravel. Det finns både fristående paket och applikationsspecifika paket. Tjänsteleverantörer talar om för Laravel var paketresurser ska läsas in.

Laravel, liksom många andra lokala utvecklingsverktyg, förlitar sig på Docker. Docker är ett container-baserat verktyg som gör det möjligt för utvecklare att enklare skapa och distribuera sina applikationer. Med Docker-containern paketerar en utvecklare sitt program med sina dependencies och distribuerar det som ett enda paket.

Kommandoradsgränssnitt

Laravel innehåller en uppsättning kommandoradsgränssnitt (CLIs). Artisan Console innehåller kommandon som hjälper utvecklare att snabbt skapa skelettkod, förenkla och automatisera repetitiva uppgifter och lättare slutföra en applikations-version. Sail är ett lättviktigt kommandoradsgränssnitt som introducerades i Laravel 8. Sail låter utvecklaren interagera med Docker, Laravels standardutvecklingsmiljö.

Laravel Artisan CLI. (Källa: tutorialspoint.com)
Laravel Artisan CLI. (Källa: tutorialspoint.com)

Eloquent

Eloquent är en objektrelationsmappare (ORM) som möjliggör enkel interaktion med databaser. Med hjälp av MVC-arkitekturen svarar modellerna mot enskilda tabeller i en databas. Med Eloquent kan utvecklare vara säkra på snabb hämtning, enkla infogningar och uppdateringar och intuitiv definition av relationer.

Composer

Composer är ett tredjeparts hanteringsverktyg för PHP-dependencies. Composer hanterar de bibliotek, moduler och plugin-program som krävs av en Laravel-applikation.

Homestead

Laravel Homestead är en utvecklingsmiljö som möjliggör utveckling på en virtuell maskin genom att tillhandahålla en färdigförpackad Vagrant-låda. Homestead innehåller allt som behövs för Laravel-applikationsutveckling, inklusive PHP, MySQL, Nginx, Composer, Redis och mycket mer, så utvecklaren inte behöver installera dessa paket på sin lokala maskin. Homestead kräver installation av Vagrant och antingen VirtualBox eller Parallels.

Startpaket för autentisering

Laravel innehåller ett antal paket som hjälper utvecklare att komma igång snabbt. Innan du kör igång kanske du vill granska några av de många tillgängliga resurserna för att lära dig Laravel. Laravel innehåller ett par startpaket för att hjälpa utvecklaren att snabbt implementera vanliga funktioner.

Laravel Breeze är ett startpaket för autentisering. Det innehåller vanliga funktioner för autentisering och användarkonto, exempelvis användarregistrering, inloggning, e-postverifiering och lösenordsbekräftelse och återställning. Breeze innehåller även en javascript-frontend via Vue. Breeze har ett standardvylager som använder Blade-mallar och Tailwind-CSS.

För mer avancerade autentiseringsfunktioner erbjuder Laravel nu Jetstream, som introducerades första gången i version 8. Förutom funktionerna i Breeze erbjuder Jetstream även ytterligare avancerade funktioner som tvåfaktorsautentisering, sessionshantering, API-support via Laravel Sanctum och valfri teamhantering.

För utvecklare som föredrar att använda sin egen autentiseringsfrontend, erbjuder Laravel Fortify – en autentiseringsbackend som är frontend-agnostisk. Fortify är motorn för Jetstream-autentiseringsstartpaketet och innehåller alla Laravel-autentiseringsfunktioner (t.ex. användarregistrering, inloggning, e-postverifiering, tvåfaktorsautentisering osv.). Fortify är inte den underliggande motorn för Laravel Breeze.

Laravel erbjuder även social mediabaserad autentisering (OAuth) via Laravel Socialite.

För utvecklare som vill distribuera sina applikationer med minimal serverkonfiguration eller vill ha serverlös distribution erbjuder Laravel Forge och Vapor. Forge möjliggör distribution via en mängd olika infrastrukturleverantörer med minimala konfigurationsinsatser. Vapor är en serverlös distributionsplattform som är baserad på AWS.

För dem som vill ta nästa steg kan utvecklare distribuera sina Laravel-applikationer via sin egen webbplats med egen hosting. Detta beror på att själv-hosting av din webbplats kräver att du ställer in flera definierade databaser med ett enda PHP-kommando (med den senaste versionen) och SSH-åtkomst till servern. Laravel erbjuder båda sakerna i ett PHP-ramverk med öppen källkod, och som en extra bonus är det ganska enkelt att installera.

Vad mer kan Laravel göra?

En bättre fråga är,Vad kan Laravel inte göra?” Det finns tusentals paket som utför valfritt antal funktioner. Några av de mer intressanta officiella Laravel-paketen är:

Cashier and Spark

Laravel Cashier tillhandahåller ett gränssnitt för prenumerationsfaktureringstjänster från Stripe och Paddle. Cashier tillhandahåller även avancerade prenumerationsfunktioner, exempelvis kuponger och annulleringsfrister.

Cashier är motorn för Laravel Spark en panel för faktureringshantering som gör det möjligt för användare att skapa och hantera sina prenumerationer. Spark är även begränsad till Stripe och Paddle som betalningsleverantörer; anpassade leverantörer är ännu inte kompatibla med Spark. Spark tillåter dock utvecklaren att välja sin frontend.

Valet

Laravel Valet är en macOS-utvecklingsmiljö med fokus på hastighet och minimal resursanvändning (cirka 7 MB RAM). Valet är inte avsedd att vara en komplett ersättare för Sail eller Homestead. Den är istället avsedd för användare med specifika behov och resursbegränsningar.

För fler paket, se Laravels webbplats eller Packalyst.

Laravel in 2024

Den nuvarande versionen av Laravel är version 8, som ursprungligen släpptes i februari 2022. Den här versionen innehåller ett antal nya funktioner och förbättringar. Några av de nya funktionerna i version 8 inkluderar Laravel Jetstream, job-batchning (tillåter körning av en batch med jobs, följt av prestanda för definierade åtgärder), dynamiska Blade-komponenter (tillåter körningskomponentåtergivning baserat på ett körningsvärde) och användning av Tailwind CSS som standard i Laravel-paginatorn, bland annat. Det har även gjorts förbättringar för att betygsätta begränsnings- och underhållsläget.

Nya Laravel-utgåvor släpptes tidigare var sjätte månad. Detta resulterade dock i många frågor, kommentarer och en stor förvirring om Laravel’s nya utgåve-process. Med lanseringen av Laravel 9 i februari år 2022 har ramverket nu bytt till en 12-månaders utgåve-cykel.

Sammanfattning

Utvecklare som söker snabb och enkel webbapplikationsutveckling bör överväga att lära sig Laravel. Laravel tillhandahåller en omfattande och robust uppsättning av resurser som förenklar utvecklingsprocessen genom att eliminera behovet av att koda många vanliga uppgifter från grunden.

Laravel erbjuder även en säker virtuell utvecklingsmiljö och intuitiva kommandoradsgränssnitt. Och eftersom Laravel är enkelt att lära sig och har ett starkt support-community och ekosystem, är det ett naturligt val för många utvecklare, vare sig de är nybörjare eller experter med många års erfarenhet.