Introduksjon til Lumen

Lumen er et splitter nytt PHP-mikroramme utviklet av forfatteren av Laravel-rammeverket, Taylor Otwell. Ikke stress, skjønt-Lumen er ikke ment å erstatte Laravel. Faktisk er ideen bak Lumen at den utfyller dine eksisterende eller fremtidige Laravel-applikasjoner.

Taylor Otwell utviklet Lumen med noen svært spesifikke formål i tankene, nemlig mikroservices og APIer. Bare kort er en microservice en mindre, avkoblet prosess som kommuniserer med en større applikasjon, f.eks. vår Laravel søknad.

I denne artikkelen vil jeg gå over hva som er forskjellig i Lumen, når vi skal bruke Lumen, og hvordan vi kan bruke Lumen. Jeg vil også forklare hvordan vi kan ta vår Lumen-applikasjon og enkelt overføre den til en fullstabel Laravel-applikasjon. Det vil ikke være mye kode, da Lumen er mye det samme som Laravel. La oss komme i gang.

Så hva er nytt?

Dette vil mest sannsynlig være det første spørsmålet som mange av dere vil spørre. I virkeligheten er ikke mye mye "nytt" med lumen bortsett fra limet. Lumen bruker fremdeles de fleste Illuminate-komponentene som utgjør Laravel-rammen (det mangler bare et par). Tenk på det som en slanket Laravel-installasjon. 

Målet er å maksimere ytelsen, og for å få denne økningen i ytelse, har flere ting blitt endret. De viktigste av disse er følgende:

  1. Mindre konfigurasjon. Mye av lumen kommer pre-configured. Faktisk finner du at det er nei config katalog i en Lumen installasjon. I stedet bruker du .env filer for å konfigurere det meste av søknaden din.
  2. Ulike ruteren. Dette er trolig den største forskjellen og grunnen til at det kan være så fort som det er. Lumen bruker ikke Symfony-ruteren som sin storebror Laravel. I stedet bruker Lumen FastRoute, en lettvektsrutingimplementasjon utviklet av Nikita Popov.

Det er noen avganger her. FastRoute er en veldig rask implementering, men det er ikke så funksjonelt pakket som Symfony-ruteren. Hvis du vil bruke sub-domain routing, må du holde fast med en Laravel-installasjon som bruker Symfony-ruteren. 

Den andre avstanden som er verdt å nevne er at for finere kontroll over konfigurasjonen av visse komponenter, må du endre konfigurasjonsfiler i leverandør / laravel / lumen-rammeverk katalogen. Størstedelen av konfigurasjonen kan gjøres gjennom .env filer, men noen mindre konfigurerte ting er ikke direkte konfigurerbare.

Skal jeg bytte til lumen akkurat nå?

Svaret her vil avhenge, men sannsynligvis ikke. Hvis du utvikler eller har utviklet en applikasjon på Laravel (4 eller 5), vil du sannsynligvis ikke trenger å bytte til Lumen akkurat i så liten minutt. Mens Lumen er i stand til å utvikle et fullblåst nettapplikasjon, er det bedre egnet til mindre, avkoblede tjenester og APIer.

Så når kan jeg bruke den?

Jeg kan ikke fortelle deg når du kan og ikke kan bruke et rammeverk som er tilgjengelig for deg. Jeg vil imidlertid gjøre noen anbefalinger når du kan vurdere å bruke Lumen til en del av ditt neste prosjekt.

La oss si at du bygger et stort nettbutikkprogram. Så du går videre og installerer Laravel og kommer til å jobbe med en monolitisk applikasjon. Nå er det ingenting galt med denne tilnærmingen, og du kan finne det fungerer bra for deg. Hvis ja, fortsett. Hvis du finner at du blir overveldet av kompleksiteten, eller ting ser ut til å bli litt ut av hånden, kan du dele det opp i noen mindre, mer håndterbare brikker.

Du vil bruke Lumen til å lage separate applikasjoner for hver avkoblet tjeneste. For vår butikk kan vi dele fakturering, e-postvarsler, frakt og sporing for å skille applikasjoner. Hver av disse programmene ville være en selvstendig Lumen installasjon, og hver applikasjon ville bare gjøre en bestemt oppgave. 

For å gjøre det mulig for vårt hovedprogram å kommunisere med våre avkoblede tjenester, vil vi benytte køer og en tjeneste som Amazon SQS. Vi kan bruke køer til å kjøre jobber enkelt, og hver tjeneste vil lytte etter bestemte jobber og behandle dem når de er i kø. Fordelen med denne tilnærmingen er at hver tjeneste kan skaleres og distribueres uavhengig av hverandre. 

Du kan også bruke Lumen til å bygge en API som også kan bli konsumert av hovedprogrammet ditt ved hjelp av en HTTP-klient som Guzzle. Med denne avkoblingen kan du skala og optimalisere forretningssiden av søknaden din uten å forstyrre resten.

Ok, hvordan bruker jeg det?

Nå bør du ha en god ide om hvorvidt bruk av Lumen er det rette skrittet for deg. Installere Lumen er like enkelt som å installere Laravel: en enkel komponistskap-prosjekt kommandoen, eller du kan installere lumen kommandoen for å skape nye prosjekter. Vi bruker bare Komponist til å hente en ny installasjon.

komponist opprette-prosjekt laravel / lumen LumenProject --prefer-dist

Komponist vil trekke ned alle avhengighetene. Du kan bruke Artisan til å raskt tjene opp applikasjonen for å ta en titt, eller du kan sette opp et virtuelt vert eller homestead-nettsted. Uansett, når du slår veien til Lumen-installasjonen, ser du den skinnende plaska siden, og informerer deg om at Lumen er bra å gå.

Konfigurasjon er ferdig i .env filer, så du vil enten endre navn på .env.example fil eller kopier innholdet til en ny fil.

Den gjenværende oppstartingen som du vil være oppmerksom på er i bootstrap / app.php fil. Hvis du bruker .env konfigurasjon nevnt ovenfor, så vil du ikke kommentere Dotenv :: load (__ DIR __. '/ ... /');. Ruller gjennom denne filen vil du se flere kommenterte linjer som du kanskje vil ikke kommentere. Det er lasting av fasader, Eloquent, noen middlewares, og registrering av andre tjenesteleverandører.

Du har nå fått deg en nyinstallert og konfigurert kopi av Lumen klar til å bygge noe fantastisk.

Men vent, jeg trenger Laravel nå!

Du kan bygge din Lumen-applikasjon, og alt går helt greit, til en skjebnesvangre dag når du innser at du trenger noe som bare fullstabilt Laravel-rammeverket tilbyr. Ikke stress, men det er en ekstremt smertefri oppgradering. Her følger trinnene:

  1. Installer en fersk kopi av Laravel 5.
  2. Kopier over din app katalogen. Vær oppmerksom på at du kanskje trenger noen ting fra L5 app katalog, for eksempel leverandører.
  3. Kopier over konfigurasjonen til den aktuelle filen i config katalog.
  4. Kopier over alle tilpassede oppstartstrapping.
  5. Fest noen ruter. Fordi Lumen bruker FastRoute, må du sannsynligvis tilpasse noen av rutene dine slik at de er kompatible med Symfony-ruteren.

Det bør være hovedparten av det du trenger å kopiere for å migrere Lumen-programmet til Laravel. Selvfølgelig virker dette på begge måter, slik at du enkelt kan overføre en Laravel-applikasjon til Lumen hvis du skjønner at du ikke trenger alt full-stack-rammeverket tilbyr.

Konklusjon

For å pakke opp dette, vil jeg bare påpeke at jeg fortaler bruk av Lumen primært for dekoblede tjenester og APIer, som er den tilsiktede bruken. Det er ikke å si at du ikke kan bygge en hel applikasjon på Lumen, fordi du kan. Hvis du velger å gjøre det, er det greit. Det er ikke noen regler skåret i en stentabletter som forteller deg hva du kan og ikke kan bruke til dine prosjekter. På slutten av dagen er beslutningen overlatt til deg. Vekt alternativene dine, planlegg prosjektet ditt, avgjøre hva du trenger, konsulter teamet ditt, og gjør deretter din endelige avgjørelse.