Lumen è un nuovissimo micro-framework PHP sviluppato dall'autore del framework Laravel, Taylor Otwell. Non stressare, però - Lumen non è destinato a sostituire Laravel. In effetti, l'idea alla base di Lumen è che integra le tue applicazioni Laravel esistenti o future.
Taylor Otwell ha sviluppato Lumen con alcuni scopi ben precisi, ovvero microservizi e API. In breve, un microservizio è un processo più piccolo e disaccoppiato che comunica con un'applicazione più ampia, ad es. la nostra applicazione Laravel.
In questo articolo voglio approfondire ciò che è diverso in Lumen, quando dovremmo usare Lumen e come possiamo usare Lumen. Spiegherò anche come possiamo prendere la nostra applicazione Lumen e migrarla facilmente in un'applicazione Laravel a stack completo. Non ci sarà un sacco di codice, dato che Lumen è molto simile a Laravel. Iniziamo.
Questa sarà probabilmente la prima domanda che molti di voi chiederanno. In realtà, non molto è in realtà "nuovo" con Lumen a parte la colla. Lumen utilizza ancora la maggior parte dei componenti Illuminate che compongono il framework di Laravel (mancano solo un paio). Pensa a un'installazione Laravel snellita.
Il suo obiettivo è massimizzare le prestazioni e, per ottenere questo aumento delle prestazioni, sono state modificate diverse cose. Il più importante di questi sono i seguenti:
config
directory in un'installazione di Lumen. Invece, utilizzerai il .ENV
file per configurare la maggior parte della tua applicazione.Ci sono alcuni compromessi qui. FastRoute è un'implementazione molto veloce, ma non è così ricca di funzionalità come il router Symfony. Se si desidera utilizzare il routing del sottodominio, è necessario attenersi a un'installazione di Laravel che utilizza il router Symfony.
L'altro compromesso che vale la pena menzionare è che per un controllo più preciso sulla configurazione di alcuni componenti è necessario modificare i file di configurazione all'interno di vendor / laravel / lume-quadro
directory. La maggior parte della configurazione può essere eseguita tramite .ENV
file, ma alcune cose configurate in modo minore non sono direttamente configurabili.
La risposta qui dipenderà, ma probabilmente no. Se stai sviluppando o hai sviluppato un'applicazione su Laravel (4 o 5), probabilmente non avrai bisogno di passare a Lumen proprio in questo momento. Mentre Lumen è in grado di sviluppare un'applicazione web in piena regola, è più adatta ai servizi e alle API più piccoli, disaccoppiati.
Non posso dirti quando puoi e non puoi usare un framework che è a tua disposizione. Tuttavia, fornirò alcune raccomandazioni su quando potresti prendere in considerazione l'utilizzo di Lumen per una parte del tuo prossimo progetto.
Supponiamo che tu stia costruendo una grande applicazione per il webshop. Quindi vai avanti e installa Laravel e inizia a lavorare su un'applicazione monolitica. Ora, non c'è niente di sbagliato in questo approccio, e potresti trovare che funziona bene per te. Se è così, continua. Se ti accorgi di essere sopraffatto dalla complessità, o le cose sembrano essere un po 'fuori mano, allora potresti voler dividerlo in alcuni pezzi più piccoli e più gestibili.
Dovresti usare Lumen per creare applicazioni separate per ciascun servizio disaccoppiato. Per il nostro negozio potremmo suddividere la fatturazione, le notifiche via e-mail, la spedizione e il tracciamento per separare le applicazioni. Ciascuna di queste applicazioni sarebbe un'installazione autonoma di Lumen e ogni applicazione eseguirà solo un compito specifico.
Per consentire alla nostra applicazione principale di comunicare con i nostri servizi disaccoppiati, utilizzeremmo code e un servizio come Amazon SQS. Possiamo usare le code per accodare facilmente i lavori, e ogni servizio dovrebbe ascoltare i suoi particolari lavori ed elaborarli mentre sono in coda. Il vantaggio di questo approccio è che ogni servizio può essere ridimensionato e implementato indipendentemente l'uno dall'altro.
Puoi anche utilizzare Lumen per creare un'API che potrebbe essere utilizzata anche dall'applicazione principale con l'aiuto di un client HTTP come Guzzle. Questo disaccoppiamento consente di ridimensionare e ottimizzare il lato commerciale dell'applicazione senza interferire con il resto.
A questo punto dovresti avere una buona idea se usare Lumen sia il giusto passo per te. Installare Lumen è facile come installare Laravel: un semplice compositore crea-progetto
comando, o è possibile installare il lumen
comando per creare nuovi progetti. Useremo semplicemente Composer per ottenere una nuova installazione.
compositore creare-progetto laravel / lumen LumenProject --prefer-dist
Il compositore abbatterà tutte le dipendenze. Puoi utilizzare Artisan per pubblicare rapidamente l'applicazione per dare un'occhiata, oppure puoi configurare un host virtuale o un sito Homestead. Ad ogni modo, una volta raggiunto il percorso dell'installazione Lumen, vedrai la lucente pagina iniziale che ti informa che Lumen è bello andare.
La configurazione è tutto fatto nel .ENV
file, quindi vorrai rinominare il .env.example
file o copi il suo contenuto in un nuovo file.
Il restante bootstrap di cui vorrete essere a conoscenza è in bootstrap / app.php
file. Se stai usando il .ENV
configurazione sopra menzionata quindi ti consigliamo di decommentare Dotenv :: load (__ DIR __. '/ ... /');
. Scorrendo questo file vedrai diverse righe commentate che potresti voler decommentare. C'è il caricamento di facciate, Eloquent, alcuni middleware e la registrazione di altri fornitori di servizi.
Ora hai una copia appena preparata e configurata di Lumen pronta a costruire qualcosa di straordinario.
Potresti creare la tua applicazione Lumen e tutto andrà assolutamente bene, fino a un giorno fatale quando ti rendi conto di aver bisogno di qualcosa che solo il framework Laravel a pila piena offre. Non sottolineare, però, in quanto è un aggiornamento estremamente indolore. Ecco i passi da seguire:
App
directory. Essere consapevoli del fatto che potrebbe essere necessario alcune cose dalla L5 App
directory, come i provider.config
elenco.Questo dovrebbe essere il grosso di ciò che è necessario copiare per migrare l'applicazione Lumen in Laravel. Naturalmente, questo funziona in entrambi i modi, quindi puoi facilmente migrare un'applicazione Laravel a Lumen se ti rendi conto che non hai bisogno di tutto ciò che offre il framework full-stack.
Per concludere, voglio solo sottolineare che sto sostenendo l'uso di Lumen principalmente per i servizi e le API disaccoppiati, che è la sua destinazione d'uso. Questo non vuol dire che non puoi costruire un'intera applicazione su Lumen, perché puoi. Se scegli di farlo, va bene. Non ci sono regole scolpite in una tavoletta di pietra che ti dicono cosa puoi e non puoi usare per i tuoi progetti. Alla fine della giornata la decisione è lasciata a te. Pesate le vostre opzioni, pianificate il vostro progetto, decidete di cosa avrete bisogno, consultate il vostro team e poi prendete la decisione finale.