La comunità PHP è stata recentemente benedetta con una nuova versione di uno dei suoi framework più amati, Laravel. La versione 5.0.1 è una release importante, quindi non solo ci sono alcune nuove fantastiche funzionalità disponibili, ma anche le basi architettoniche del framework sono state modificate in una certa misura. Quindi, senza ulteriori indugi, mi tufferò nel framework e ti mostrerò tutte le cose positive che l'ultima versione ha da offrire.
La struttura delle cartelle di un progetto Laravel ha subito una profonda revisione. Laravel 5 implementa lo standard di autoloading PSR-4, il che significa che tutte le classi sono completamente nominate. Lo spazio dei nomi predefinito per la tua applicazione web è App
, che puoi cambiare usando il app php artigianale: nome
comando.
I tuoi modelli rientrano nello spazio dei nomi predefinito dell'app e si trovano all'interno della cartella dell'app. Le risorse, le visualizzazioni e i file della lingua dell'applicazione si trovano nella cartella delle risorse. Le directory vendor, public e bootstrap mantengono il loro posto come nelle versioni precedenti del framework, mentre le directory config, storage, database e test sono state spostate nella root del progetto.
Se guardi all'interno della cartella dell'app, noterai un sacco di classi, ma non ti preoccupare per ora - ci accingiamo a farlo nel corso di questo articolo.
Il rilevamento dell'ambiente è stato notevolmente migliorato. Invece di tutte le complesse directory di configurazione annidate, hai a .ENV
file alla radice del progetto per prendersi cura dell'ambiente dell'applicazione e di tutte le variabili d'ambiente. Anche il php artigiano armeggiare
il comando ora utilizza il pacchetto Psysh al posto di Boris.
L'iniezione del metodo è stata notevolmente semplificata. Fino alla versione 4.2, era necessario richiedere il contenitore Inversion of Control (IoC) per fornire un'istanza di classe o crearla nel costruttore del controllore per renderlo accessibile nell'ambito della classe. Ora è possibile dichiarare l'istanza di classe di tipo suggerito nella firma del metodo del controller e il contenitore IoC si prenderà cura di esso, anche se nella firma della funzione del controller vi sono più parametri.
I contratti sono in realtà classi di interfaccia sotto mentite spoglie. Le interfacce sono un metodo collaudato per rimuovere la dipendenza di classe e sviluppare componenti software liberamente accoppiati. In genere ti aiutano a seguire la regola "dipendere dalle astrazioni, non dalle concrezioni".
Laravel acquista la stessa filosofia. La maggior parte dei componenti principali principali si avvale di questi contratti per mantenere il framework liberamente accoppiato. Puoi anche utilizzarli nello sviluppo del tuo pacchetto.
Ad esempio, se il pacchetto richiede la memorizzazione nella cache, anziché utilizzare una classe di cache concreta, è possibile implementare la Illuminare \ Contratti \ Cache
interfaccia e sarai libero di collegare l'implementazione della cache dentro e fuori senza modificare gran parte del tuo codice pacchetto.
Potresti chiedere come Laravel va a capire l'implementazione per un contratto specifico. Tutta quella magia accade dentro il Illuminare \ Foundation \ application.php
file.
Artisan ha una nuova funzionalità di memorizzazione nella cache del percorso. Il caching del percorso accelera enormemente la registrazione del percorso dell'applicazione, con vantaggi prestazionali chiaramente visibili. Tuttavia, se la tua applicazione si occupa di un numero limitato di rotte, potresti non vedere l'impatto che il caching del percorso dovrebbe avere, il che significa che è più adatto ai casi in cui la tua applicazione ha un numero elevato di rotte.
I comandi percorso php artigianale: cache
e Percorso artigianale php: chiaro
attiva e disattiva la cache di instradamento. Una volta attivata la memorizzazione nella cache del percorso, le eventuali modifiche apportate ai percorsi dell'applicazione non avranno effetto. Il caching del percorso verrà generalmente implementato come parte del processo di distribuzione.
Il middleware può essere utilizzato per aggiungere livelli extra ai percorsi HTTP. Se si desidera che il codice venga eseguito prima di ogni instradamento o prima di percorsi specifici nell'applicazione, una tale parte di codice è adatta per una classe middleware.
Ad esempio, supponiamo di voler bloccare un certo intervallo di IP dall'applicazione per rendere l'applicazione non disponibile in quella regione. In tal caso, è necessario verificare l'IP del client prima di ogni richiesta e consentire / non consentire l'accesso alla propria applicazione. Questo sarà molto da fare nelle azioni del tuo controller, quindi utilizzerai invece il middleware. Genera una classe middleware a app / Http / Middleware / RegionMiddleware.php
usando php artisan make: middleware "RegionMiddleware"
.
È quindi possibile registrare il middleware in app / Http / Kernel.php
file aggiungendolo al $ middleware
array. Puoi anche collegare il middleware a percorsi specifici aggiungendolo al $ routeMiddleware
array e quindi passarlo nelle opzioni del percorso.
L'autenticazione fa parte di quasi tutte le applicazioni Web sviluppate e viene dedicato molto tempo alla stesura dello standard di autenticazione. Questo non è più il caso di Laravel 5. Le migrazioni, i modelli, i controller e le viste del database devono essere semplicemente configurati per far funzionare tutto. Laravel 5 ha un servizio di registrazione, che è una parte cruciale di questo sistema di autenticazione pronto all'uso, pronto all'uso.
Sono finiti i vecchi tempi in cui si dichiaravano gli eventi dell'applicazione come stringhe, perché l'oggetto evento è ora disponibile. È possibile creare oggetti evento utilizzando php artigianale: evento
e gli oggetti del gestore eventi che usano gestore php artigiano: evento
. Tutte le tue lezioni di evento e di gestione entrano nel app / Eventi
e app / Handlers / Eventi
cartella rispettivamente.
Dopo aver creato i tuoi eventi, puoi licenziarli Evento :: fuoco (nuovo evento (parametri))
. Per allegare gli ascoltatori ai tuoi eventi, devi modificare il file $ ascolta
matrice nel app / fornitori / EventServiceProvider.php
file.
Laravel 5 ti consente di incapsulare la tua complessa logica di business in semplici oggetti di comando.
Ad esempio, supponiamo tu abbia un negozio online in cui gli utenti si registrano e acquistano articoli elettronici. La procedura di registrazione potrebbe comportare la verifica dell'indirizzo email dell'utente e della carta di credito.
Potrebbe essere una tentazione di scaricare tutto questo codice in un'azione del controller, ma non è una buona idea avere un codice che funzioni solo nel contesto della richiesta HTTP, essere difficile testare l'unità a causa delle richieste HTTP e ingrossare le azioni del controller.
Fare questo usando i comandi ti darà diversi vantaggi. Innanzitutto, il tuo codice autonomo sarà modulare e sarà un gioco da ragazzi per testare l'unità. In secondo luogo, poiché Laravel consente di accodare i comandi, la logica aziendale può essere eseguita in modo asincrono in background, operazione impossibile con le azioni del controller.
Una coda pronta all'uso viene fornita di default con il framework, quindi non è necessario utilizzare pacchetti di terze parti. Tutto quello che devi fare è configurare la coda e dovresti essere a posto. Tutti i tuoi lavori in fila sono tenuti nel app / Comandi
cartella. Dopo aver creato i tuoi comandi di coda, puoi semplicemente inviarli alla coda usando Queue :: push (new Command ($ params))
.
Anche la pianificazione delle attività è stata migliorata molto. In precedenza, dovevi impostare un cron per ogni comando della console, ma non più. Avrai solo bisogno di una singola voce di cron e potrai programmare le tue attività all'interno dell'applicazione usando un sacco di zucchero di sintassi.
Laravel 5 supporta nativamente diversi filesystem usando il pacchetto di terze parti Flysystem. L'applicazione può utilizzare l'archiviazione locale o cloud mediante una semplice configurazione. Avrai solo bisogno di lavorare con la facciata del filesystem e le operazioni di archiviazione sottostanti saranno gestite automaticamente. È possibile configurare le opzioni di archiviazione in config / filesystems.php
file. Nel caso in cui sia necessario accedere a tutte le opzioni di archiviazione disponibili nel progetto, è possibile ignorare la facciata del filesystem e lavorare direttamente con la facciata del disco.
L'oggetto richiesta consente di inserire l'autenticazione / l'autorizzazione e la logica di convalida dei dati nelle richieste. Una volta implementata la logica aziendale nell'oggetto richiesta, è necessario digitare il suggerimento nell'azione di un controller, proprio come nel caso dell'iniezione del metodo.
Decifriamo questo usando un esempio di codice. Eseguire php artisan make: richiedi TutsPlusRequest
per generare una classe di richiesta a app / HTTP / Richieste / TutsPlusRequest.php
. Guardando nel contenuto di quel file, noterai che artisan ha generato un metodo di regole e un metodo di autorizzazione. Stai per aggiungere alcune regole di convalida nel tuo metodo delle regole.
'required | email', 'password' => 'required | min: 8']; // nel tuo controller azione pubblica funzione postLogin (\ App \ Http \ Requests \ TutsPlusRequest $ richiesta) // codice qui non sparerà // se le regole di validazione // nella richiesta falliscono?>
Vuoi che l'e-mail sia un indirizzo email valido e che la password sia composta da almeno otto caratteri. Entrambi i campi sono obbligatori. Se una di queste regole di convalida fallisce, l'azione del controllore non verrà eseguita e l'utente verrà reindirizzato alla pagina del modulo.
Elixir è un'API GulpJS per Laravel che ti aiuta a definire le attività gulp per le tue applicazioni. Immergersi in GulpJS va oltre lo scopo di questo articolo, ma puoi dare un'occhiata al suo sito ufficiale e all'Elixir per maggiori informazioni.
Un tipico caso d'uso per GulpJS è la minimizzazione / concatenazione dei file CSS / JS. I tuoi pacchetti gulp risiedono nel package.json
file nella radice del progetto, mentre le attività che devono essere eseguite sono specificate nel file gulpfile.js
file. Per quelli di voi che hanno già familiarità con il flusso di lavoro GulpJS, questo avrebbe più senso, dal momento che Elixir ti aiuta solo a integrare GulpJS nelle tue app Laravel.
Socialite è un pacchetto di prima parte che rende l'integrazione di autenticazione di terze parti nelle tue applicazioni web un gioco da ragazzi. Dal momento che non è incluso di default, è necessario inserirlo usando il compositore. Una volta fatto, è necessario configurare i provider che si desidera utilizzare nella propria applicazione. Attualmente, Socialite supporta Twitter, GitHub, Google e Facebook.
Spero vi siate divertiti a esaminare le specifiche di Laravel 5. Da un punto di vista architettonico, penso che il framework abbia compiuto enormi passi in avanti, che faranno molta strada nel mantenere il codice dell'applicazione web organizzato e liberarvi dall'incubo che è la manutenzione.
.