Inleiding tot Lumen

Lumen is een gloednieuw PHP-micro-framework van het merk ontwikkeld door de auteur van het Laravel-framework, Taylor Otwell. Maar wees niet gestresseerd: Lumen is niet bedoeld om Laravel te vervangen. In feite is het idee achter Lumen dat het een aanvulling is op uw bestaande of toekomstige Laravel-toepassingen.

Taylor Otwell ontwikkelde Lumen met enkele zeer specifieke doeleinden in het achterhoofd, namelijk microservices en API's. Kort gezegd is een microservice een kleiner, ontkoppeld proces dat communiceert met een grotere toepassing, b.v. onze Laravel-applicatie.

In dit artikel wil ik ingaan op wat anders is in Lumen, wanneer we Lumen moeten gebruiken en hoe we Lumen kunnen gebruiken. Ik zal ook uitleggen hoe we onze Lumen-applicatie kunnen gebruiken en deze eenvoudig kunnen migreren naar een Laravel-applicatie met volledige stack. Er zal niet heel veel code zijn, omdat Lumen veel hetzelfde is als Laravel. Laten we beginnen.

Dus, wat is er nieuw?

Dit zal waarschijnlijk de eerste vraag zijn die velen van jullie zullen stellen. In werkelijkheid is niet echt een heleboel "nieuw" met Lumen afgezien van de lijm. Lumen maakt nog steeds gebruik van de meeste verlichtingscomponenten die deel uitmaken van het Laravel-raamwerk (er zijn slechts een paar ontbrekend). Zie het als een afgeslankte Laravel-installatie. 

Het doel is om de prestaties te maximaliseren en om deze toename in prestaties te krijgen, zijn verschillende dingen veranderd. De belangrijkste hiervan zijn de volgende:

  1. Minder configuratie. Veel van Lumen is voorgeconfigureerd. In feite zul je merken dat er geen is config map in een Lumen-installatie. In plaats daarvan gebruikt u de .env bestanden om het grootste deel van uw applicatie te configureren.
  2. Verschillende router. Dit is waarschijnlijk het grootste verschil en de reden waarom het zo snel kan zijn als het is. Lumen maakt geen gebruik van de Symfony-router zoals zijn grote broer Laravel. In plaats daarvan gebruikt Lumen FastRoute, een lichtgewicht routeringsimplementatie ontwikkeld door Nikita Popov.

Er zijn een paar compromissen hier. FastRoute is een zeer snelle implementatie, maar het is niet zo boordevol functies als de Symfony-router. Als u subdomeinroutering wilt gebruiken, moet u een Laravel-installatie gebruiken die de Symfony-router gebruikt. 

De andere inruil die het vermelden waard is, is dat voor fijnere controle over de configuratie van bepaalde componenten configuratiebestanden binnen de verkoper / laravel / lumen-framework directory. Het grootste deel van de configuratie kan worden gedaan via de .env bestanden, maar sommige minder goed geconfigureerde dingen kunnen niet rechtstreeks worden geconfigureerd.

Moet ik nu naar Lumen overschakelen?

Het antwoord hier zal afhangen, maar waarschijnlijk niet. Als u een applicatie ontwikkelt of heeft ontwikkeld op Laravel (4 of 5), hoeft u waarschijnlijk niet zo snel naar Lumen over te schakelen. Hoewel Lumen in staat is om een ​​complete webtoepassing te ontwikkelen, is Lumen beter geschikt voor de kleinere, ontkoppelde services en API's.

Dus wanneer kan ik het gebruiken??

Ik kan u niet vertellen wanneer u een raamwerk kunt en kunt gebruiken dat voor u beschikbaar is. Ik zal echter enkele aanbevelingen doen over wanneer je zou kunnen overwegen om Lumen te gebruiken voor een deel van je volgende project.

Laten we zeggen dat u een grote webshop-toepassing aan het bouwen bent. Dus ga je gang en installeer Laravel en ga aan de slag met een monolithische applicatie. Nu is er niets mis met deze aanpak, en misschien vind je het wel goed voor je. Als dat zo is, ga door. Als je merkt dat je overweldigd raakt door de complexiteit, of dingen een beetje uit de hand lijken te lopen, dan wil je het misschien opsplitsen in een paar kleinere, beter hanteerbare stukken.

U zou Lumen gebruiken om afzonderlijke toepassingen te maken voor elke ontkoppelde service. Voor onze winkel kunnen we de facturering, e-mailmeldingen, verzending en tracking naar afzonderlijke toepassingen splitsen. Elk van deze toepassingen zou een op zichzelf staande Lumen-installatie zijn en elke toepassing zou alleen een specifieke taak uitvoeren. 

Om onze hoofdtoepassing te laten communiceren met onze ontkoppelde services, maken we gebruik van wachtrijen en een service zoals Amazon SQS. We kunnen wachtrijen gebruiken om taken gemakkelijk in de wachtrij te plaatsen, en elke service zou naar zijn specifieke taken luisteren en deze verwerken terwijl ze in de wachtrij staan. Het voordeel van deze aanpak is dat elke service onafhankelijk van elkaar kan worden geschaald en geïmplementeerd. 

U kunt Lumen ook gebruiken om een ​​API te maken die ook door uw hoofdtoepassing kan worden gebruikt met behulp van een HTTP-client zoals Guzzle. Met deze ontkoppeling kunt u de zakelijke kant van uw toepassing schalen en optimaliseren zonder de rest te verstoren.

Oké, hoe gebruik ik het?

Inmiddels zou u een goed idee moeten hebben of het gebruik van Lumen de juiste stap voor u is. Het installeren van Lumen is net zo eenvoudig als het installeren van Laravel: een eenvoudig composer create-project opdracht, of u kunt de lumen opdracht om nieuwe projecten te maken. We gebruiken Composer gewoon om een ​​nieuwe installatie te krijgen.

composer create-project laravel / lumen LumenProject - prefer-dist

Composer zal alle afhankelijkheden naar beneden halen. U kunt Artisan gebruiken om snel de applicatie te gebruiken om een ​​kijkje te nemen, of u kunt een Virtual Host of Homestead-site opzetten. Hoe dan ook, zodra je het pad naar je Lumen-installatie hebt bereikt, zie je de glanzende splash-pagina die je vertelt dat Lumen goed is om te gaan.

Configuratie is allemaal gedaan in de .env bestanden, zodat u de naam van de bestanden wilt wijzigen .env.example bestand of kopieer de inhoud ervan naar een nieuw bestand.

De resterende bootstrapping waarvan u op de hoogte wilt zijn, bevindt zich in de bootstrap / app.php het dossier. Als u de .env configuratie hierboven vermeld, dan wilt u uncomment Dotenv :: load (__ DIR __. '/ ... /');. Als u door dit bestand scrolt, ziet u verschillende regels met opmerkingen die u wellicht wilt laten verwijderen. Er is het laden van gevels, Eloquent, sommige middlewares en de registratie van andere serviceproviders.

Je hebt nu een pas geïnstalleerde en geconfigureerde versie van Lumen klaar om iets geweldigs te bouwen.

Maar wacht even, ik heb nu Laravel nodig!

Misschien bouw je je Lumen-toepassing en gaat alles perfect, tot een noodlottige dag wanneer je je realiseert dat je iets nodig hebt dat alleen het Laravel-raamwerk met volledige stapel biedt. Maar wees niet gestresst, want het is een extreem pijnloze upgrade. Dit zijn de te volgen stappen:

  1. Installeer een nieuw exemplaar van Laravel 5.
  2. Kopieer over je app directory. Houd er rekening mee dat je misschien wat dingen van de L5 nodig hebt app directory, zoals de providers.
  3. Kopieer uw configuratie naar het juiste bestand in de config directory.
  4. Kopieer over aangepaste bootstrapping.
  5. Bepaalde routes corrigeren. Omdat Lumen FastRoute gebruikt, moet u waarschijnlijk sommige van uw routes aanpassen, zodat ze compatibel zijn met de Symfony-router.

Dat moet het grootste deel zijn van wat u moet kopiëren om uw Lumen-toepassing naar Laravel te migreren. Dit werkt natuurlijk in beide richtingen, dus je kunt eenvoudig een Laravel-toepassing naar Lumen migreren als je je realiseert dat je niet alles nodig hebt van de full-stack framework-aanbiedingen.

Conclusie

Om dit af te ronden, wil ik er alleen op wijzen dat ik het gebruik van Lumen voornamelijk voor ontkoppeling van diensten en API's bepleit, wat het bedoelde gebruik ervan is. Dat wil niet zeggen dat je geen hele applicatie op Lumen kunt bouwen, omdat je dat wel kunt. Als je ervoor kiest om het te doen, is dat prima. Er zijn geen regels uitgehouwen in een stenen tablet die u vertellen wat u wel en niet kunt gebruiken voor uw projecten. Aan het einde van de dag wordt de beslissing aan u overgelaten. Weeg uw opties af, plan uw project, beslis wat u nodig heeft, raadpleeg uw team en neem uw uiteindelijke beslissing.