Introduktion till Lumen

Lumen är ett varumärkesstarkt nytt PHP-mikroramverk som utvecklats av författaren till Laravel-ramverket, Taylor Otwell. Lita inte på, men Lumen är inte avsett att ersätta Laravel. Faktum är att tanken bakom Lumen är att den kompletterar dina befintliga eller framtida Laravel-applikationer.

Taylor Otwell utvecklade Lumen med vissa mycket specifika ändamål i åtanke, nämligen microservices och API. Bara kort är en microservice en mindre, avkopplad process som kommunicerar med en större applikation, t.ex. vår Laravel ansökan.

I denna artikel vill jag gå över vad som är annorlunda i Lumen, när vi ska använda Lumen och hur vi kan använda Lumen. Jag förklarar också hur vi kan ta vår Lumen-applikation och enkelt migrera den till en fullstackad Laravel-applikation. Det kommer inte att finnas en hel del kod, eftersom Lumen är ungefär samma som Laravel. Låt oss börja.

Så vad är nytt?

Detta kommer sannolikt att vara den första frågan som många av er kommer att fråga. I själva verket är inte en hel del faktiskt "ny" med Lumen bortsett från limet. Lumen använder fortfarande de flesta av de Illuminate-komponenterna som utgör Laravel-ramverket (det saknas bara ett par). Tänk på det som en nedtonad Laravel-installation. 

Målet är att maximera prestanda, och för att få denna ökning av prestanda har flera saker ändrats. De viktigaste av dessa är följande:

  1. Mindre konfiguration. Mycket av lumen kommer förkonfigurerade. Faktum är att du finner att det inte finns något config katalog i en Lumen-installation. I stället använder du .env filer för att konfigurera det mesta av din ansökan.
  2. Olika router. Detta är förmodligen den största skillnaden och anledningen till att den kan vara så snabb som den är. Lumen använder inte Symfony-routern som sin storebror Laravel. Istället använder Lumen FastRoute, en lättvägd routingimplementation som utvecklats av Nikita Popov.

Det finns några avvägningar här. FastRoute är en mycket snabb implementering, men den är inte lika funktionell som Symfony-routern. Om du vill använda subdomän-routing måste du hålla fast vid en Laravel-installation som använder Symfony-routern. 

Den andra avvägningen som är värt att nämna är att för bättre kontroll över konfigurationen av vissa komponenter måste du ändra konfigurationsfiler inom försäljaren / laravel / lumen-ram katalogen. Majoriteten av konfigurationen kan göras genom .env filer, men några mindre konfigurerade saker är inte direkt konfigurerbara.

Ska jag byta till Lumen just nu?

Svaret här kommer bero på, men förmodligen inte. Om du utvecklar eller har utvecklat en applikation på Laravel (4 eller 5), behöver du förmodligen inte byta till Lumen just denna minut. Medan Lumen kan utveckla en fullblåst webbapplikation, passar den bättre till de mindre, avkopplade tjänsterna och API: erna.

Så när kan jag använda den?

Jag kan inte berätta när du kan och kan inte använda en ram som är tillgänglig för dig. Jag kommer emellertid att göra några rekommendationer om när du kanske funderar på att använda Lumen för en del av ditt nästa projekt.

Låt oss säga att du bygger en stor webbutikansökan. Så du går och installerar Laravel och börjar arbeta med en monolitisk applikation. Nu är det inget fel med detta tillvägagångssätt, och du kanske tycker att det fungerar bra för dig. Om så är fallet, fortsätt. Om du upptäcker att du blir överväldigad med komplexiteten, eller saker verkar bli lite utslagna, kanske du vill dela upp det i några mindre, mer hanterbara bitar.

Du skulle använda Lumen för att skapa separata applikationer för varje avkopplad tjänst. För vår butik kan vi dela upp fakturering, e-postmeddelanden, frakt och spårning för att separera applikationer. Var och en av dessa applikationer skulle vara en fristående lumeninstallation och varje applikation skulle bara göra en specifik uppgift. 

För att göra det möjligt för vår huvudsakliga applikation att kommunicera med våra frikopplade tjänster använder vi oss av köer och en tjänst som Amazon SQS. Vi kan använda köer för att enkelt köa upp jobb, och varje tjänst skulle lyssna på sina specifika jobb och bearbeta dem som de är i kö. Fördelen med detta tillvägagångssätt är att varje tjänst kan skalas och distribueras oberoende av varandra. 

Du kan också använda Lumen för att skapa ett API som också kan konsumeras av din huvudsakliga applikation med hjälp av en HTTP-klient som Guzzle. Med denna avkoppling kan du skala och optimera verksamhetssidan i din ansökan utan att störa resten.

Okej, hur använder jag den?

Nu borde du ha en bra uppfattning om huruvida Lumen är det perfekta steget för dig. Installera Lumen är lika enkelt som att installera Laravel: en enkel kompositörskapsprojekt kommandot, eller du kan installera lumen befaller att skapa nya projekt. Vi använder bara Kompositör för att fånga en ny installation.

kompositör skapa-projekt laravel / lumen LumenProject --prefer-dist

Kompositören drar ner alla beroenden. Du kan använda Artisan för att snabbt tjäna upp ansökan för att ta en titt, eller du kan ställa in en virtuell värd eller hemsida. Hur som helst, när du slår vägen till din Lumen-installation ser du den glänsande stänk sidan som informerar dig om att Lumen är bra att gå.

Konfigurationen är klar i .env filer, så du vill antingen byta namn på .env.example fil eller kopiera innehållet till en ny fil.

Den återstående bootstrapping som du vill vara medveten om är i bootstrap / app.php fil. Om du använder .env konfiguration som nämns ovan så vill du inte kommentera Dotenv :: load (__ DIR __. '/ ... /');. Om du rullar igenom den här filen ser du flera kommenterade rader som du kanske inte vill kommentera. Det finns lastning av fasader, Eloquent, några middlewares och registrering av andra tjänsteleverantörer.

Du har nu fått dig en nyinstallerad och konfigurerad kopia av Lumen redo för att bygga något fantastiskt.

Men vänta, jag behöver Laravel nu!

Du kan bygga din Lumen-applikation och allt går helt bra, tills en ödesdigra dag när du inser att du behöver något som bara full-stack Laravel-ramen erbjuder. Stress inte, eftersom det är en extremt smärtfri uppgradering. Här följer stegen att följa:

  1. Installera en ny kopia av Laravel 5.
  2. Kopiera över din app katalogen. Var medveten om att du kanske behöver några saker från L5 app katalog, som leverantörer.
  3. Kopiera över din konfiguration till rätt fil i config katalog.
  4. Kopiera över alla anpassade bootstrapping.
  5. Fixa några rutter. Eftersom Lumen använder FastRoute behöver du förmodligen tweak några av dina rutter så att de är kompatibla med Symfony-routern.

Det ska vara huvuddelen av det du behöver kopiera för att migrera din Lumen-applikation till Laravel. Självklart fungerar det båda sätten, så du kan enkelt migrera en Laravel-applikation till Lumen om du inser att du inte behöver allt fullt stack-ramverket erbjuder.

Slutsats

För att paketera upp det vill jag bara påpeka att jag förespråkar användningen av Lumen främst för avkopplade tjänster och API, vilket är dess avsedda användning. Det är inte att säga att du inte kan bygga en hel applikation på Lumen, eftersom du kan. Om du väljer att göra det, är det bra. Det finns inga regler som skärs i en stenplatta som berättar vad du kan och inte kan använda för dina projekt. I slutet av dagen är beslutet kvar till dig. Väga dina alternativ, planera ditt projekt, bestämma vad du behöver, kontakta ditt team och gör sedan ditt slutliga beslut.