CONTATTACI

Blog

Laravel 8: tutte le novità

Laravel 8, la versione più recente del framework creato da Taylor Otwell, è stata rilasciato l’8 settembre. Le modifiche strutturali e funzionali rilasciate indicano che il framework assumerà un aspetto sempre più ben strutturato e ci darà la possibilità di creare programmi sempre più complessi.

Vediamo quali sono le principali novità:

  1. Models directory
  2. Model based factory
  3. Migrations squashing
  4. Laravel Jetstream
  5. Manteinance mode
  6. Instradamento
  7. Laravel Livewire

Models directory

La prima differenza tra la nuova e la vecchia versione del framework è la presenza della cartella dedicata ai modelli. Nella vecchia versione, i modelli si trovavano nel namespace app come file liberi. Nella nuova versione hanno una cartella dedicata chiamata models che possiamo trovare nel namespace app.

Model based factory

In questa ultima versione di Laravel, le factories hanno assunto un aspetto più complesso rispetto alla versione precedente. 

In Laravel 7, per creare degli oggetti per testare le funzionalità, dovevamo creare una factory e applicarla su un modello con una precisa descrizione. 

Vediamo un esempio: 

In questo caso, dovevamo specificare alla factory che avrebbe dovuto creare un oggetto di classe User.

In Laravel 8 le factories sono classi che estendono la classe factory e sono model based, il che vuol dire che una factory ha una responsabilità unica verso un’unica classe. 

Nella factory ora sono presenti l’attributo model, che specifica qual è la classe a cui la factory fa riferimento e il metodo definition, che restituisce gli attributi del modello.

Anche in Laravel 8 le factories hanno accesso ai metodi di Faker.

Nei modelli, invece, è stato aggiunto il trait HasFactory, permettendo così alla factory di agire sul modello.

Laravel Jetstream

Laravel Jetstream è un ottimo strumento per creare uno scaffolding di partenza per la gestione dell’utente.

Ci sono due modi per poter utilizzare jetstream:

  1. creare il nuovo progetto laravel con jetstream incluso tramite il comando

laravel new NomeProgetto –jet

  1. includere Jetstram nel progetto dopo aver creato l’applicazione laravel tramite il comando

composer require laravel/jetstream

Jetstream fornisce un punto di partenza perfetto per il progetto, includendo login e register, verifica e-mail, autenticazione a due fattori, gestione delle sessioni e molto altro.

Per maggiori info: Jetstream Installation

Squashing delle migrazioni

Durante lo sviluppo del tuo progetto, potresti trovarti nell’esigenza di creare tante migrazioni per strutturare il tuo database e, di conseguenza, riempire la cartella delle migrazioni fino a farla esplodere.

Lo squashing delle migrazioni risolve questo problema.

Grazie al comando php artisan schema:dump, tutte le migrazioni verranno riportate in un file SQL e, aggiungendo l’estensione —prune, tutte le migrazioni presenti in quel momento, verranno eliminate dalla cartella database/migrations.

Il file creato con il comando php artisan schema:dump , si trova nella cartella database/schema.

Se dovessi creare altre migrazioni dopo aver lanciato il comando, otterresti dei file migration nella cartella database/migrations.

Manteinance mode

La modalità manutenzione è una funzione che permette di disabilitare temporaneamente l’applicazione che stai aggiornando.

Nella versione 7, bastava concatenare l’opzione — allow con un indirizzo ip per permettere l’accesso. 

Nella versione 8, invece, non è più necessario specificare gli indirizzi IP permessi, basterà generare un token da associare al comando php artisan down —secret=”token” e aggiungere il token all’URL per essere autorizzati ad entrare nell’applicazione.

Instradamento

In Laravel 8, la proprietà namespace in app/Providers/RouteServiceProvider.php è di default null.

Nelle versioni precedenti, questa proprietà era valorizzata con il namespace App/Http/Controllers.

Questo cambiamento implica che nelle funzioni Route non c’è più il prefisso automatico nel namespace e che non possiamo più utilizzare la sintassi.

Ora, per richiamare una funzione controller di un determinato controller, dobbiamo includere il suo namespace nel file web.php e utilizzare la seguente sintassi

Attenzione, cari nostalgici, se proprio non potete fare a meno di utilizzare il caro vecchio metodo, vi basterà modificare il valore di $namespace nel RouteServiceProvider con il path App/Http/Controllers

Laravel Livewire

Per la gestione dell’utente tramite Jetstream, Laravel include Livewire nel nostro progetto.

Livewire è un full stack framework che sta diventando sempre più popolare nel mondo Laravel.

La sua filosofia è semplice ma molto potente: collega i dati che abbiamo nel back-end con i dati che mostriamo nel front-end in tempo reale. Non è una novità, starete pensando. E avete ragione. Ma la novità sta nel fatto che, a differenza di Vue.js, non abbiamo bisogno di interrogare il backend tramite chiamate Ajax e far ritornare i dati nel frontend per poi rimontarli. È Livewire ad occuparsi di rimontare il componente con il suo HTML e riportarlo nel frontend.

Tutto ciò viene fatto utilizzando i metodi scritti in PHP presenti nel componente back-end che vengono richiamati tramite eventi di JavaScript. 

Facciamo un esempio:

Immaginiamo di avere un componente che gestice l’inserimento di un contatto nel database.

Un contatto, per essere salvato, ha bisogno di nome, email e password.

Creiamo il componente dove avremo la nostra logica back-end: 

<?php
namespace App\Http\Livewire;

use App\Models\Contact;

use Livewire\Component;

class ContactManager extends Component
{

    public $contact_name;
    public $contact_email;
    public $contact_password;

    public function saveContact()
    {
        $newContact = new Contact();
        $newContact->name = $this->contact_name;
        $newContact->email = $this->contactemail;
        $newContact->password = $this->contact_password;
        $newContact->save();
    }
    public function render()
    {
        return view('livewire.contact-manager');
    }
}

Come possiamo vedere, ogni componente ha un proprio stato di memoria, costituito dalle proprietà presenti in esso. In questo caso, le proprietà sono contact_name, contact_email, contact_password.

Creiamo la vista che sarà collegata al componente

Livewire riesce a collegare le proprietà del componente con i rispettivi input nel front-end tramite la direttiva wire:model.

Quando andiamo a cambiare il valore dell’input, questo verrà salvato nello stato della memoria del componente back-end in tempo reale, senza creare funzionalità particolari.

Tutto questo è possibile grazie al JavaScript presente in Livewire che cattura l’evento onchange nell’input e invia i dati al componente back-end.

Per quanto riguarda il salvataggio, invece, Livewire catturerà l’evento click sul bottone e farà partire la chiamata alla funzione saveContact presente nel componente back-end che, come possiamo vedere, creerà una nuova istanza di Contact, assocerà il valore delle proprietà presenti nel suo stato in quel momento e salverò i dati nel database.

Tutto questo utilizzando PHP!

Articoli correlati

Il linguaggio HTML (Hypertext Markup Language) è uno dei più conosciuti e diffusi: lo si trova infatti praticamente in tutte le pagine web esistenti. È una scelta popolare tra i principianti che si…

Seguici su Facebook

Vuoi entrare nel mondo della programmazione?

Scopri di più sui nostri corsi!

Chiamaci al numero verde

Contattaci su WhatsApp

Contattaci senza impegno per informazioni sul corso

Pagamento rateale

Valore della rata: A PARTIRE DA 115 €/mese.

Esempio di finanziamento 

Importo finanziato: € 2440 in 24 rate da € 115 – TAN fisso 9,55% TAEG 12,57% – importo totale del credito € 2841.

Il costo totale del credito comprende: interessi calcolati al TAN indicato, oneri fiscali (imposta di bollo sul contratto 16,00 euro*) addebitati sulla prima rata, costo mensile di gestione pratica € 3,90, spesa di istruttoria € 0,00, spesa per invio rendicontazione periodica cartacea € 0,98 (o spesa per invio rendicontazione periodica cartacea € 0,00), imposta di bollo su rendicontazione periodica € 0,00. Modalità di rimborso obbligatoria: addebito diretto su c/c. La scadenza delle rate è determinata dal giorno della liquidazione del contratto; la data di scadenza delle rate è prevista il giorno 15 del mese. L’importo di ciascuna rata comprende una quota di capitale crescente e interessi decrescente secondo un piano di ammortamento “alla francese”. Offerta valida dal 01/01/2024 al 31/12/2024.

Messaggio pubblicitario con finalità promozionale. Per le informazioni precontrattuali richiedere sul punto vendita il documento “Informazioni europee di base sul credito ai consumatori” (SECCI) e copia del testo contrattuale. Salvo approvazione di Sella Personal Credit S.p.A. Aulab S.r.l. opera quale intermediario del credito NON in esclusiva.

*In fase di richiesta del finanziamento verrà proposta la facoltà di selezionare, in alternativa all’imposta di bollo sul contratto di 16,00 euro, l’imposta sostitutiva, pari allo 0,25% dell’importo finanziato.

Pagamento rateale

Valore della rata: A PARTIRE DA 210 €/mese.

Esempio di finanziamento  

Importo finanziato: € 4500 in 24 rate da € 210,03 – TAN fisso 9,68% TAEG 11,97% – importo totale del credito € 5146,55.

Il costo totale del credito comprende: interessi calcolati al TAN indicato, oneri fiscali (imposta di bollo sul contratto 16,00 euro*) addebitati sulla prima rata, costo mensile di gestione pratica € 3,90, spesa di istruttoria € 0,00, spesa per invio rendicontazione periodica cartacea € 0,98 (o spesa per invio rendicontazione periodica cartacea € 0,00), imposta di bollo su rendicontazione periodica € 0,00. Modalità di rimborso obbligatoria: addebito diretto su c/c. La scadenza delle rate è determinata dal giorno della liquidazione del contratto; la data di scadenza delle rate è prevista il giorno 15 del mese. L’importo di ciascuna rata comprende una quota di capitale crescente e interessi decrescente secondo un piano di ammortamento “alla francese”. Offerta valida dal 01/01/2024 al 31/12/2024.

Messaggio pubblicitario con finalità promozionale. Per le informazioni precontrattuali richiedere sul punto vendita il documento “Informazioni europee di base sul credito ai consumatori” (SECCI) e copia del testo contrattuale. Salvo approvazione di Sella Personal Credit S.p.A. Aulab S.r.l. opera quale intermediario del credito NON in esclusiva.

* In fase di richiesta del finanziamento verrà proposta la facoltà di selezionare, in alternativa all’imposta di bollo sul contratto di 16,00 euro, l’imposta sostitutiva, pari allo 0,25% dell’importo finanziato.

Contattaci senza impegno per informazioni sul corso

Scopriamo insieme se i nostri corsi fanno per te. Compila il form e aspetta la chiamata di uno dei nostri consulenti.