Introduzione a Lumen

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.

Allora che c'è di nuovo?

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:

  1. Meno configurazione. Gran parte di Lumen viene preconfigurato. In effetti, scoprirai che non c'è config directory in un'installazione di Lumen. Invece, utilizzerai il .ENV file per configurare la maggior parte della tua applicazione.
  2. Router diverso. Questa è probabilmente la più grande differenza e il motivo per cui può essere veloce come è. Lumen non utilizza il router Symfony come il suo fratello maggiore Laravel. Invece, Lumen utilizza FastRoute, un'implementazione di routing leggera sviluppata da Nikita Popov.

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.

Devo passare a Lumen Right Now?

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.

Quindi quando posso usarlo?

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.

Ok, come posso usarlo?

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.

Ma aspetta, ho bisogno di Laravel ora!

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:

  1. Installa una nuova copia di Laravel 5.
  2. Copia tra i tuoi App directory. Essere consapevoli del fatto che potrebbe essere necessario alcune cose dalla L5 App directory, come i provider.
  3. Copia tutta la tua configurazione nel file appropriato in config elenco.
  4. Copia su qualsiasi bootstrap personalizzato.
  5. Correggere alcuni percorsi. Poiché Lumen utilizza FastRoute, probabilmente dovrai modificare alcuni dei tuoi percorsi in modo che siano compatibili con il router Symfony.

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.

Conclusione

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.