Dopo oltre un decennio dall’introduzione del popolarissimo framework Laravel, vi siete mai chiesti cos’altro possa offrire Laravel agli sviluppatori PHP?

Considerando quanto abbia già semplificato lo sviluppo PHP sia per gli sviluppatori alle prime armi che per i professionisti, alcuni potrebbero addirittura dire che ha fatto credere agli sviluppatori che PHP sia il linguaggio di programmazione più semplice in circolazione.

Dunque, Laravel ha ancora in serbo altre sorprese per gli sviluppatori di Laravel? Oppure ha esaurito tutti i mezzi possibili per supportare gli sviluppatori PHP?

Una cosa è certa: sappiamo che Laravel 10 ha molto da offrire, ed è ciò che vi illustreremo in questo articolo, mentre vi accompagneremo in un tour attraverso le nuove funzionalità, le correzioni, i metodi e i pacchetti appena deprecati di Laravel 10.

Programma di Rilascio di Laravel

Il team di Laravel era solito rilasciare due versioni principali all’anno (una ogni sei mesi).

Tuttavia, il ciclo di rilascio è stato modificato quando Taylor Otwell, il creatore di Laravel, ha annunciato che ogni anno sarebbe stata rilasciata un’unica versione principale. Questo ha permesso al team principale e alla comunità di dedicare più tempo e sforzi a una versione specifica del framework e di introdurre nuove potenti funzionalità senza apportare modifiche.

Il rilascio di Laravel 10 era previsto per il 7 febbraio 2023, dopo il rilascio di Laravel 9 l’8 febbraio 2022. Tuttavia, il team aveva bisogno di più tempo per finalizzare la sua opera d’arte e Laravel 10 è stato pubblicato il 14 febbraio 2023.

Il rilascio di Laravel 11 è previsto per il primo trimestre di febbraio 2024.

Inoltre, secondo la politica di supporto, le correzioni dei bug vengono offerte per 18 mesi e gli aggiornamenti di sicurezza per due anni per tutte le versioni di Laravel.

Di seguito sono riportati i tempi previsti per la correzione dei bug e gli aggiornamenti di sicurezza:

  • Laravel 9 continuerà a ricevere correzioni di bug fino all’8 agosto 2023 e correzioni di sicurezza fino al 6 febbraio 2024.
  • Laravel 10 riceverà correzioni di bug fino al 6 agosto 2024 e correzioni di sicurezza fino al 4 febbraio 2025.
  • Per Laravel 11 sono previste correzioni di bug fino al 5 agosto 2025 e correzioni di sicurezza fino al 3 febbraio 2026.

È Necessario Aggiornare a Laravel 10?

È importante ricordare che non è sempre necessario aggiornare la versione di Laravel della nostra applicazione all’ultima versione non appena viene rilasciata una nuova versione.

Laravel è un framework open-source, il che significa che ogni volta che installiamo una nuova istanza di Laravel sulla nostra macchina, siamo proprietari della base di codice del framework. Ciò significa che anche se la versione del framework che utilizziamo non è più supportata, l’applicazione continuerà a funzionare; dovremo solo occuparci della sua manutenzione.

Di conseguenza, è ampiamente suggerito che la stabilità dell’applicazione sia prioritaria rispetto agli aggiornamenti del framework.

In breve, dovreste considerare l’aggiornamento a Laravel 10 quando:

  • L’applicazione è stabile con la versione attuale e funziona senza problemi.
  • La nuova versione aggiunge una funzionalità necessaria all’applicazione o risolve un problema che l’applicazione sta riscontrando.
  • L’applicazione sarà ben testata prima che le modifiche dell’aggiornamento vengano messe in produzione.

Gli Aggiornamenti più Importanti di Laravel 10

Laravel 10.
Laravel 10.

Kinsta è un grande fan di Laravel. Per questo motivo abbiamo raccolto i punti salienti di Laravel 10 in un unico articolo da utilizzare come riferimento e guida per l’utilizzo di tutte le nuove funzionalità. Vi consigliamo quindi di contrassegnare questa pagina con un segnalibro e di consultarla di tanto in tanto.

Nuove Funzionalità e Aggiornamenti di Laravel 10

Non c’è dubbio che la parte più eccitante di ogni nuova release sia l’aggiunta di nuove funzionalità. Quindi, senza ulteriori indugi, iniziamo a dare un’occhiata alle nuove funzionalità e agli aggiornamenti di Laravel 10.

1. PHP 8.1: Il Cuore di Laravel 10

PHP 8.1 è la versione di PHP minima richiesta in Laravel 10. Alcune funzionalità di PHP 8.1, come le proprietà readonly e array_is_list, sono utilizzate in Laravel 10.

2. Supporto per PHP 8.2

PHP 8.2 è stato rilasciato l’8 dicembre 2022, solo due mesi prima della data di rilascio di Laravel 10. Tuttavia, questo non dovrebbe allarmarvi né impedirvi di utilizzare le funzioni di PHP 8.2, poiché senza fare nulla di più, Laravel 10 è pronto per PHP 8.2.

Infatti, l’intero ecosistema di Laravel, tra cui Forge, Vapor ed Envoyer, supporta PHP 8.2 ed è persino possibile usare PHP 8.2 con Laravel 9. Fantastico!

3. Aggiornamento dei Pacchetti Ufficiali di Laravel

Non solo il framework è curato e aggiornato regolarmente, ma lo sono anche tutti i pacchetti ufficiali e l’ecosistema.

Di seguito elenchiamo i più recenti pacchetti ufficiali di Laravel che sono stati aggiornati per supportare Laravel 10:

  1. Breeze
  2. Stripe Cashier
  3. Dusk
  4. Horizon
  5. Installatore
  6. Jetstream
  7. Passaporto
  8. Pint
  9. Vela
  10. Scout
  11. Valet

Un’altra chicca per gli appassionati di Rails, Vue, React e Svelte: Inertiajs 1.0.1 supporta anche Laravel 10.

4. Aggiornamento della Versione di Predis

Predis è un solido client Redis per PHP che può aiutarti a sfruttare al meglio la cache per offrire un’esperienza utente fantastica. In passato Laravel supportava sia la versione 1 che la versione 2, ma a partire da Laravel 10, il framework non supporta più Predis 1.

Sebbene la documentazione di Laravel indichi Predis come pacchetto per interagire con Redis, è possibile anche utilizzare l’estensione PHP ufficiale. Questa estensione fornisce un’API per comunicare con i server Redis.

5. Dichiarazioni di Tipo Nativo

Laravel utilizzava i DocBlocks nel suo codice scheletrico per chiarire cosa fa un pezzo di codice e che tipo di parametri o risposte aspettarsi. Tuttavia, grazie alle dichiarazioni di tipo nativo in Laravel 10, le cose cambieranno.

Il modo migliore per spiegare questo cambiamento è con un semplice esempio. Invece di avere una funzione come questa:

/**
* Determine whether the user can create models.
*
* @param {{ namespacedUserModel }} $user
* @return IlluminateAuthAccessResponse|bool
*/

public function create({{ user }} $user)
{
  //
}

… avrà l’aspetto seguente:

/**
* Determine whether the user can create models.
*/

public function create({{ user }} $user): bool
{
  //
}

Questa modifica è a puro vantaggio dell’esperienza dello sviluppatore, in quanto gli IDE conosceranno la forma del parametro e della risposta previsti. Fornirà una migliore chiarezza dei tipi quando non è possibile farlo attraverso i tipi nativi di PHP. Di conseguenza, aiuterà gli editor di codice a funzionare meglio con le funzioni di completamento automatico.

6. Tutte le Regole di Validazione Invocabili per Impostazione Predefinita

Prima, se volevate creare una regola di validazione invocabile in Laravel 9, dovevate aggiungere un flag --invokable dopo il comando Artisan. Questo non è più necessario perché tutte le regole di Laravel 10 sono invocabili per impostazione predefinita. Quindi, per creare una nuova regola invocabile in Laravel 10, potete eseguire il seguente comando:

php artisan make:rule CustomRule

7. Supporto Nativo per la Modifica delle Colonne

Nel tentativo di eliminare la necessità del pacchetto DBAL (doctrine/dbal) quando si utilizza change() per modificare le colonne, in Laravel 10 è stata introdotta una nuova funzionalità che consente agli sviluppatori di utilizzare il metodo change() e modificare le colonne con MySQL, PostgreSQL e SQL Server senza la necessità di pacchetti aggiuntivi. Si tratta di un cambiamento significativo e rischioso, ma crediamo che ne valga la pena perché eliminerà la dipendenza da un pacchetto aggiuntivo.

Per capire meglio la nuova funzione, date un’occhiata all’esempio qui sotto:

$table->integer('user_balance')->unsigned()->default(0)->comment('balance'); // `user_balance` is an integer, unsigned, defaults to '0', and column comment is 'balance'

Supponiamo di avere una colonna per user_balance e di volerne cambiare il tipo. A partire da Laravel 10, possiamo semplicemente fare così:

$table->bigInteger('user_balance')->change(); // This will change `user_balance` to bigInteger instead of just integer

Il codice precedente cambierà con successo il tipo della colonna, ma eliminerà anche gli attributi UNSIGNED, DEFAULT e COMMENT. Pertanto, è importante ricordarsi di aggiungere tutti gli attributi quando si cambia il tipo di una colonna:

$table->bigInteger('user_balance')->unsigned()->default(0)->comment('balance')->change();

Nel caso in cui abbiate più connessioni al database e abbiate già installato DBAL, è consigliabile chiamare il metodo Schema::useNativeSchemaOperationsIfPossible() all’interno del metodo di avvio in AppProvidersAppServiceProvider per poter utilizzare le operazioni native dello schema e per utilizzare le operazioni native prima di affidarsi al pacchetto (SQLite, ad esempio, non lo supporta ancora):

use IlluminateSupportFacadesSchema;
class AppServiceProvider extends ServiceProvider
{
  public function boot()
  {
    Schema::useNativeSchemaOperationsIfPossible();
  }
}

8. Recupero Nativo del Tipo di Colonna

Un’altra caratteristica degna di nota di Laravel 10 è la possibilità di utilizzare il metodo Schema::getColumnType senza doversi affidare al pacchetto doctrine/dbal. Attualmente utilizziamo Schema::getColumnType con DBAL per ottenere il tipo di colonna. DBAL mappa ogni tipo di colonna nativa nel suo tipo equivalente DBAL e non supporta molti dei tipi di colonna utilizzati da Laravel nei vari database.

In Laravel 10, invece, il nuovo metodo Schema::getColumnType restituisce il tipo di colonna effettivo anziché l’equivalente DBAL. Inoltre, permette di scrivere test di integrazione per la nuova funzione di modifica nativa delle colonne. È possibile utilizzare questa funzione per ottenere il nome del tipo di dati o l’intera definizione del tipo della colonna specificata:

Schema::getColumnType('products', 'price'); // decimal

9. Algoritmo di Hashing più Veloce

xxHash è un algoritmo di hash incredibilmente veloce. È caratterizzato da una grande casualità e dispersione dell’output, oltre che dall’unicità per ridurre le collisioni. Dato che PHP 8.1 supporta xxh128 e che Laravel 10 gira su PHP 8.1, avere un algoritmo di hash così affidabile in Laravel 10 è l’ideale.

Vale la pena ricordare che Taylor ha evidenziato, durante la sua revisione di questa modifica, che alcuni pacchetti di terze parti possono fare affidamento sul fatto che i nomi dei file siano nell’esatto formato dell’hash SHA-1, che è l’algoritmo utilizzato da Laravel per l’hashing. Pertanto, se state pianificando un aggiornamento a Laravel 10, sarebbe opportuno ricontrollare questo aspetto in tutti i pacchetti di terze parti utilizzati nell’applicazione.

10. whereExists() Supporto del Metodo per Eloquent Builder

Attualmente, l’utilizzo di whereExists() richiede la configurazione della query annidata tramite una chiusura. Fortunatamente, con Laravel 10 è ora possibile includere un Eloquent Builder come query annidata. Questo permette di utilizzare i metodi personalizzati del costruttore, gli ambiti del modello e così via.

Ad esempio, di solito lo facciamo se vogliamo utilizzare whereExists():

Order::whereExists(function ($query) {
  $query->from('products')->whereColumn('products.order_id', 'orders.id');
});

Con Laravel 10, invece, possiamo fare così:

Order::whereExists(
  Product::whereColumn('products.order_id', 'orders.id')
);

11. Ottimizzazione dell’Eager Loading

Una delle novità più interessanti di Laravel 10 è l’ottimizzazione del caricamento anticipato quando non ci sono chiavi da caricare. Questa modifica è più una correzione che una funzionalità, in quanto affronta un problema attuale in cui le relazioni di eager loading causano l’esecuzione di un gran numero di query impossibili.

Attualmente, quando si caricano relazioni che non hanno chiavi da caricare, Laravel esegue una query simile a questa:

select * from `table_name` where 0 = 1

Tuttavia, il nuovo aggiornamento di Laravel 10 controlla se ci sono chiavi disponibili e, se non ce ne sono, fornisce una collezione vuota, eliminando la necessità di effettuare inutili query al database.

12. $path Opzionale per i metodi del filesystem

In Laravel 10, il parametro $path è opzionale per i seguenti metodi:

  • FilesystemAdapter#putFile
  • FilesystemAdapter#putFileAs
  • UploadedFile#store
  • UploadedFile#storeAs
  • UploadedFile#storePublicly
  • UploadedFile#storePubliclyAs

Quindi, invece di eseguire questa operazione per memorizzare un file caricato su Amazon S3:

Storage::disk('s3')->putFile(‘post/images', $uploadedFile);

… possiamo fare così:

Storage::disk(Disk::PostImages)->putFile($uploadedFile)

13. Espressioni di Database e Formattazione Specifica per la Grammatica

A soli quattro giorni dal rilascio di Laravel 10, il team di Laravel ha deciso di unire una brillante funzione che affronta una grande sfida quando si lavora con più database.

Nelle versioni precedenti, se lavoravamo con PostgreSQL e MySQL e volevamo restituire il primo valore di un elenco come alias, dovevamo scrivere il codice del database grezzo e fare quanto segue:

DB::table(‘visitors')
->when(isPostgreSQL(), fn ($query) => $query->select(DB::raw('coalesce(NULL, "user", "guest") AS "First Visitor"')))
->when(isMySQL(), fn ($query) => $query->select(DB::raw('coalesce(NULL, `user`, `guest`) AS `First Visitor`')))

Nel codice sopra riportato, stiamo utilizzando la funzioneCOALESCE() per restituire il primo valore non nullo come alias chiamato primo visitatore. Quindi, ogni volta che dovremo eseguire un’operazione di questo tipo, dovremo scrivere nuovamente il codice del database.

La nuova funzione ci permette di creare classi di espressioni riutilizzabili che implementano le espressioni e le dichiarazioni grezze necessarie per le nostre query una sola volta. Questo eliminerà la necessità di scrivere il codice grezzo del database quando vorremo utilizzare altre funzionalità del database.

Tornando all’esempio precedente, seguiamo il nuovo approccio di Laravel 10 per ottenere lo stesso risultato senza utilizzare la sintassi del codice del database.

Per prima cosa, dobbiamo creare due classi: una per l’aliasing e una per l’utilizzo della funzione COALESCE():

class Alias implements Expression
{
  public function __construct(
    public readonly Expression|string $expression,
    public readonly string $name,
  ) { }
  public function getValue(Grammar $grammar): string
  {
    return match ($grammar->isExpression($this->expression)) {
      true => "{$grammar->getValue($this->expression)} as {$grammar->wrap($this->name)}",
      false => $grammar->wrap("{$this->name} as {$this->name}"),
    };
  }
}
class Coalesce implements Expression
{
  public function __construct(
    public readonly array $expressions,
  ) { }
  public function getValue(Grammar $grammar): string
  {
    $expressions = array_map(function ($expression) use($grammar): string {
      return match ($grammar->isExpression($expression)) {
        true => $grammar->getValue($expression),
        false => $grammar->wrap($expression),
      };
    }, $this->expressions);
    $expressions = implode(', ', $expressions);
    return "coalesce({$expressions})";
  }
}

Quindi, possiamo procedere in questo modo per ottenere il risultato desiderato sia per MySQL che per PostgreSQL:

DB::table('visitors') ->select(new Alias(new Coalesce([NULL, 'user', 'guest']), 'First Visitor'));

Potreste pensare che sia un lavoro troppo impegnativo da scrivere, ma ne vale sicuramente la pena perché dovrete scriverlo solo una volta e vi risparmierà il fastidio di cambiare sintassi quando avrete a che fare con più database.

Inoltre, secondo il creatore della richiesta di pull, Tobias Petry, questa modifica aprirà le porte a numerose possibilità di pacchetti che forniranno le classi di espressione grezza più comuni. Ha anche dichiarato che le metterà a disposizione della comunità in un pacchetto dedicato dopo il rilascio di Laravel 10.

14. Aggiornamento di SQL Server per l’Utilizzo di FETCH e OFFSET per le Query che non Includono un orderBy

Quando utilizziamo orderBy in una query come questa:

$builder->select('*')->from('users')->skip(11)->take(10)->orderBy('email', 'desc');

Laravel produce un’istruzione SQL che utilizza FETCH e OFFSET:

select * from [users] order by [email] desc offset 11 rows fetch next 10 rows only

Tuttavia, nelle versioni precedenti di Laravel, se si elimina orderBy dalla query, si ritorna al vecchio metodo di compensazione dei risultati:

$builder->select('*')->from('users')->skip(11)->take(10);
select * from (select *, row_number() over (order by (select 0)) as row_num from [users]) as temp_table where row_num between 11 and 20 order by row_num

Ma ora in Laravel 10, questo nuovo aggiornamento consentirà alla vostra applicazione Laravel 10 di utilizzare FETCH e OFFSET anche quando orderBy non è presente:

select * from [users] order by (SELECT 0) offset 10 rows fetch next 10 rows only

Questo aggiornamento migliora la velocità del 33% e richiede meno passaggi di esecuzione.

15. Supporto PHPUnit 10

Laravel 10 supporta PHPUnit 10. Si tratta di un framework per il testing unitario di PHP. Si tratta di un framework per i test unitari di PHP e la versione 10 è stata rilasciata il 3 febbraio 2023. Laravel 10 continuerà a supportare le versioni 9 e 8 di PHPUnit.

16. Miglioramenti alla Sicurezza della Classe Timebox

Laravel 10 include miglioramenti della sicurezza per la classe Timebox, che ha lo scopo di proteggere l’applicazione da attacchi di temporizzazione senza tempo. La classe Timebox è implementata all’interno del metodo hasValidCredentials.

La classe Timebox ora supporta la gestione delle eccezioni lanciate durante l’esecuzione di un callback di Timebox.

17. dispatch() Il Comportamento del Metodo è lo Stesso in Tutto Laravel 10

Il metodo dispatch() all’interno del tratto DispatchesJobs ora verifica la presenza di lavori unici come la funzione helper globale dispatch(). In questo modo i metodi dispatch() adottano le stesse funzionalità in tutto Laravel 10.

18. Laravel Pennant

Se avete mai lavorato a un’applicazione web che viene costantemente aggiornata con nuove funzionalità, sapete quanto siano vitali i flag delle funzionalità. Tuttavia, preservare i flag delle funzionalità richiederebbe una notevole quantità di lavoro, ma non preoccupatevi, ci pensa Laravel con il nuovo pacchetto di base Laravel Pennant.

Laravel Pennant offre una soluzione facile da usare per mantenere i flag delle funzionalità. È persino dotato di un driver per array in-memory e di un database.

È possibile definire facilmente una nuova caratteristica:

use LaravelPennantFeature;
use IlluminateSupportLottery;
Feature::define('new-color-button', function () {
return Lottery::odds(1, 10);
});

Potrete così verificare se l’utente ha accesso o meno a questa funzione:

use LaravelPennantFeature;
if (Feature::active('new-color-button')) {
  // ...
}

In Laravel Blade è ancora più bello:

@feature('new-color-button')
// Kinsta Rules!!
@endfeature

19. Interazioni di Processo Laravel

Le nuove interazioni di processo di Laravel 10 rendono il test e l’esecuzione dei processi CLI un gioco da ragazzi. Offre un’API semplice per alleggerire l’onere dei test. Prendiamo l’esempio dal PR originale di Taylor:

use IlluminateSupportFacadesProcess;
$result = Process::run('ls -la');
$result->successful();
$result->failed();
$result->exitCode();
$result->output();
$result->errorOutput();
$result->throw();
$result->throwIf(condition);

Probabilmente avrete notato quanto sia semplice e pulito il codice qui sopra. Passando alla costruzione dei processi, le cose non fanno che migliorare:

$result = Process::timeout(60)->path(base_path())->env([...])->run('ls -la');
$result = Process::forever()->run('ls -la');

Ora, per utilizzare questa nuova funzione nei test, potete creare un nuovo processo fake come questo:

Process::fake([
  'ls *' => Process::result('Hello From Kinsta'),
]);

Quindi potete eseguire il processo fake e utilizzare le nuove asserzioni disponibili:

$result = Process::run('ls -la');
Process::assertRan(function ($process, $result) {
  return $process->command == 'ls -la';
});
Process::assertRanTimes(function ($process, $result) {
  return $process->command == 'ls -la';
}, times: 1);
Process::assertNotRan(function ($process, $result) {
  return $process->command == 'cat foo';
});

20. Scaffolding di Pest

Lo scaffolding dei test di Pest è ora abilitato per impostazione predefinita quando si creano nuovi progetti Laravel. Per abilitare questa funzione, usate il flag --pest quando create una nuova applicazione con il programma di installazione di Laravel:

laravel new example-kinsta-app --pest

21. Funzione di Aiuto per le Password a Stringa

Laravel 10 può creare una password casuale e sicura con una determinata lunghezza:

$password = Str::password(12);

Metodi e Pacchetti Deprecati in Laravel 10

A seguire, analizzeremo i pacchetti e i metodi che sono stati eliminati con il rilascio di Laravel 10.

Laravel 10 Dice Addio a PHP 8.0

Il framework Laravel abbandona il supporto a PHP 8.0 in Laravel 10. Pertanto, se avete intenzione di aggiornare l’applicazione a Laravel 10, dovrete prima aggiornare la versione di PHP a PHP 8.1 o PHP 8.2.

Rimozione dei Metodi Deprecati

La documentazione di Laravel viene aggiornata con tutte le modifiche e le deprecazioni più importanti. Se avete intenzione di migrare un progetto attuale a Laravel 10, qualsiasi codice che utilizza un metodo deprecato deve essere riscritto con un nuovo approccio per ottenere lo stesso risultato.

Ecco un elenco di alcune deprecazioni:

  • Il metodo Route::home (deprecato in Laravel 9)
  • Funzioni e metodi intorno a dispatchNow, deprecato per incoraggiare gli sviluppatori a utilizzare dispatchSync, l’unico metodo supportato per il dispatch immediato
  • Il metodo getBaseQuery, che ha un equivalente toBase
  • La classe MaintenanceModeException
  • Il tratto MocksApplicationServices
  • Il metodo Mail::failures del mail fake
  • La proprietà $dates (usa $casts invece)
  • Il metodo assertTimesSent()
  • Supporto per Predis 1 e DBAL 2
  • Tutte le deprecazioni relative a doctrine/dbal da quando Laravel ha abbandonato il supporto per la versione 2

Come Installare Laravel 10

Il team di Laravel si è assicurato che tutti gli sviluppatori possano accedere facilmente al framework in diversi ambienti. Per questo motivo, esistono diversi modi per iniziare a usare Laravel 10 sul vostro computer e siete completamente liberi di scegliere quello che funziona meglio per voi.

Installare Laravel 10 su MacOS

Potete iniziare facilmente a utilizzare Laravel 10 su MacOS utilizzando Docker e Laravel Sail. Eseguite il seguente comando da terminale dalla directory in cui volete installare l’applicazione, tenendo presente che per il nome dell’app sono ammessi solo caratteri alfanumerici, trattini e trattini bassi:

curl -s "https://laravel.build/example-kinsta-app" | bash

Al termine del processo di installazione, andate nella directory del progetto e utilizzate Sail per avviare il nuovo progetto digitando il seguente comando nel terminale:

./vendor/bin/sail up

Sail utilizzerà la sua soluzione integrata per avviare il progetto Laravel utilizzando Docker e, una volta terminato, l’applicazione sarà pronta su http://localhost.

Installare Laravel 10 su Windows 10 e 11

Docker Desktop può essere utilizzato per installare rapidamente Laravel 10 su Windows. Tuttavia, sia che stiate usando Windows 10 o 11, dovrete prima abilitare una delle due opzioni seguenti sul computer:

  • Windows Subsystem for Linux 2 (WSL2) è una funzione del sistema operativo Windows che permette di eseguire un file system Linux e strumenti a riga di comando Linux direttamente su Windows.
  • Funzione Hyper-V Backend permette di creare e gestire una versione software di un computer nota come macchina virtuale.

Una volta soddisfatti tutti i requisiti di Docker, potete eseguire il seguente comando nel terminale:

curl -s https://laravel.build/example-kinsta-app | bash

Utilizzate quindi Sail per eseguire l’applicazione su http://localhost eseguendo il seguente comando dalla directory principale del vostro progetto Laravel 10 appena installato:

./vendor/bin/sail up

A proposito, molti sviluppatori preferiscono il sistema operativo Linux ad altri sistemi operativi perché permette loro di lavorare in modo più efficiente e veloce. Con WSL, potete godere della sicurezza, delle prestazioni e della compatibilità con i giochi di Ubuntu. Ubuntu è una distribuzione o versione di Linux nota per la sua semplicità d’uso.

Vi consigliamo di utilizzare Visual Studio Code e di installare l’estensione ufficiale Microsoft WSL per poter aprire qualsiasi cartella del Sottosistema Windows per Linux e sfruttare tutte le funzionalità di vscode. Inoltre, l’estensione Remote Development è un’altra opzione a cui si fa riferimento nella documentazione di Laravel.

Installare Laravel 10 con Composer

Che utilizziate macOS o Windows, Composer vi permette di essere operativi con Laravel 10 in pochissimo tempo.

Per prima cosa dovete assicurarti di avere PHP ≤ 8.1, node, npm e Composer installati sul vostro computer.

  • Per macOS: Composer può essere installato utilizzando Homebrew.
  • Per Windows: L’ultima versione stabile di Composer può essere scaricata dal sito ufficiale di Composer.

Una volta fatto, potete installare Laravel Installer a livello globale e utilizzarlo per installare la vostra nuova applicazione Laravel 10:

composer global require laravel/installer
laravel new example-kinsta-app

Oppure, potete creare una nuova applicazione Laravel 10 direttamente utilizzando solo Composer:

composer create-project laravel/laravel example-kinsta-app

Come installare Laravel 11

Manca ancora un anno al rilascio di Laravel 11. Tuttavia, Laravel 11 è già disponibile per farvi testare le sue caratteristiche. Non solo, include anche alcune PR unite su GitHub, come ad esempio l’abbandono del supporto a PHP 8.1.

Il flag --dev di Laravel Installer installa il ramo master dal repository laravel/laravel e ora che Laravel 10 è uscito, Laravel 11 sarà disponibile sul ramo master. Se utilizzate Laravel Installer, non dovete fare altro che eseguire questo comando nel vostro terminale:

laravel new example-kinsta-app --dev

Oppure, se preferite usare Composer:

composer create-project --prefer-dist laravel/laravel example-kinsta-app dev-master

Per capire meglio il comando Composer, ecco una breve spiegazione:

  • laravel/laravel: Il pacchetto per l’installazione di Laravel
  • example-kinsta-app: La nuova directory per il vostro nuovo progetto (può essere modificata)
  • dev-master: La prossima versione di Laravel (in questo caso, Laravel 11)

Dopo aver installato Laravel 11, potete confermare la versione navigando nella nuova directory example-kinsta-app ed eseguendo questo comando di Artisan:

$ php artisan --version
Laravel Framework 11.x-dev

Come Aggiornare un Progetto a Laravel 10

Siete tentati di aggiornare a Laravel 10? Il team di Laravel lavora duramente sulla documentazione per fornire una guida all’aggiornamento semplice e senza intoppi, coprendo ogni possibile modifica. Non esitate a consultare la guida ufficiale all’aggiornamento a Laravel 10.

Dovreste anche tenere d’occhio Laravel Shift ora che Laravel 10 è stato rilasciato. Laravel Shift offre un approccio semplice e automatizzato all’aggiornamento della vostra versione di Laravel.

Come Distribuire i Progetti Laravel 10

Il deploy di Laravel 10 non è diverso dal deploy di un progetto Laravel 9.

Ecco i requisiti del server:

  • PHP ≤ 8.1
  • Estensione PHP Ctype
  • estensione PHP cURL
  • Estensione DOM PHP
  • Estensione PHP Fileinfo
  • Estensione PHP Mbstring
  • Estensione OpenSSL PHP
  • Estensione PCRE PHP
  • PDO Estensione PHP
  • Estensione Tokenizer PHP
  • Estensione PHP XML
  • Estensione PHP del filtro
  • Estensione Hash PHP
  • Estensione PHP Session

È possibile distribuire e ospitare il vostro progetto Laravel 10 su Kinsta in pochi minuti, dato che Laravel fa parte di una lunga lista di framework supportati per le app ospitate.

Distribuzione di Laravel 10 su Kinsta: Guida passo per passo

L’hosting e il deploy delle vostre applicazioni Laravel su Kinsta offrono diversi vantaggi, tra cui quello di non doversi preoccupare della configurazione del deploy.

Kinsta offre uno strumento semplice da usare ma potente per distribuire le applicazioni Laravel, connettersi ai database e monitorare le prestazioni in tempo reale. Questo strumento è noto come MyKinsta e in questa sezione vi illustreremo i passaggi per distribuire un’applicazione Laravel 10 utilizzando questo strumento.

1. Preparare l’Applicazione

La homepage di un'applicazione Laravel 10 distribuita su Kinsta.
La homepage di un’applicazione Laravel 10 distribuita su Kinsta.

Supponendo che abbiate un’applicazione Laravel 10 in locale, dobbiamo assicurarci che abbiate un repository GitHub disponibile. Utilizzeremo questo repository per distribuire l’applicazione in seguito.

Potete includere un file .htaccess nella directory principale della vostra applicazione che contenga quanto segue:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

Per Laravel, questo reindirizza tutte le richieste a public/index.php. Tuttavia, se necessario, potete aggiornare questo comando durante l’aggiunta dell’applicazione (fase Setup your processes) o dopo la distribuzione, nella pagina Processes dell’applicazione. Si può utilizzare:

  • heroku-php-apache2 /public
  • php artisan serve --host 0.0.0.0 --port 8080

2. Accedere a MyKinsta

La pagina di accesso a MyKinsta.
La pagina di accesso a MyKinsta.

Andate alla pagina di login di MyKinsta e inserite il vostro indirizzo e-mail e la vostra password. Se non avete ancora un account, potete registrarne uno nuovo e ottenere uno sconto di 20 dollari sul primo mese di abbonamento a qualsiasi piano tariffario.

3. Autorizzare Kinsta su GitHub

Una volta effettuato l’accesso, noterete che il cruscotto presenta le opzioni per creare un sito WordPress, creare un’applicazione o creare un database. Premiamo sul pulsante Connect GitHub per integrarci con GitHub.

Il cruscotto di MyKinsta.
Il cruscotto di MyKinsta.

Successivamente, cliccate sul pulsante Continua con GitHub. Se non avete ancora effettuato l’accesso a GitHub, vi verrà mostrata l’opzione per effettuare l’accesso. A questo punto potete autorizzare l’applicazione Kinsta GitHub ad accedere al vostro account GitHub selezionando Autorizza Kinsta.

Infine, GitHub reindirizzerà il vostro browser a MyKinsta per continuare a configurare l’applicazione.

Connettere MyKinsta a GitHub.
Connettere MyKinsta a GitHub.

Dopo esservi collegati a GitHub, vi verrà mostrato il popup/modale Aggiungi applicazione, che presenta un menu a tendina per selezionare un repository GitHub. Cliccate sul campo del repository GitHub e selezionate Modifica permessi GitHub nel menu a tendina.

Aggiungere un'applicazione a MyKinsta.
Aggiungere un’applicazione a MyKinsta.

In questo modo si aprirà una nuova scheda del browser con la pagina web di GitHub, dove potrete scegliere a quali dati Kinsta potrà accedere. Invece di abilitare l’accesso a tutti i repository, scegliete solo quello o quelli che volete che Kinsta utilizzi.

Cliccate su Seleziona solo i repository e scegliete il repository che desiderate distribuire.

Autorizzare a Kinsta l'accesso a GitHub.
Autorizzare a Kinsta l’accesso a GitHub.

Poi cliccate su Installa e il gioco è fatto!

Quando tornerete in MyKinsta e cliccherete sul campo del repository GitHub, il repository autorizzato dovrebbe essere visibile. Inoltre, potete spuntare la casella Distribuzione automatica su commit per consentire a MyKinsta di distribuire automaticamente l’applicazione non appena apportate delle modifiche al repository GitHub.

Selezione di un ramo del repository per MyKinsta.
Selezione di un ramo del repository per MyKinsta.

4. Aggiungere i dettagli di base dell’applicazione

A questo punto potete assegnare all’applicazione un nome che verrà utilizzato solo nel cruscotto e selezionare 25 data center, in modo da collocare l’applicazione nella posizione geografica più vicina ai vostri utenti. Se avete bisogno di assistenza per determinare quale sia il data center ideale per la vostra applicazione, consultate la nostra guida alla scelta del data center giusto.

Aggiungere i dettagli di base di un'applicazione.
Aggiungere i dettagli di base di un’applicazione.

5. Aggiungere Variabili d’Ambiente

La sezione seguente è dedicata all’aggiunta di variabili d’ambiente e la variabile più importante è APP_KEY.

Se non avete già una chiave nel file .env, potete generarne una utilizzando un generatore di chiavi Laravel online. Inserite quindi APP_KEY nel campo Chiave 1 e inserite la chiave dell’applicazione generata nel campo Valore 1.

Infine, selezionate Disponibile durante il runtime e Disponibile durante il processo di build.

Aggiunta di variabili d'ambiente in MyKinsta.
Aggiunta di variabili d’ambiente in MyKinsta.

6. Configurare l’Ambiente di Build

La cosa magica è che non c’è bisogno di configurare nulla! Potete procedere cliccando sul pulsante Continua e voilà: avete completato la configurazione dell’ambiente di build. Tuttavia, se volete migliorare le risorse di build per garantire una costruzione più veloce, potete scegliere la vostra opzione preferita nel campo Risorse di build.

Il campo Percorso build è facoltativo. Potete lasciarlo vuoto e MyKinsta utilizzerà la cartella principale.

Configurazione dell'ambiente di build dell'applicazione.
Configurazione dell’ambiente di build dell’applicazione.

7. Impostazione dei Processi e del Metodo di Pagamento

Nella sezione Risorse, compilate ogni campo con le seguenti informazioni:

  • Nome del processo: il nome visualizzato nell’elenco dei processi dell’applicazione.
  • Tipo di processo: Sceglietelo con cura, perché una volta impostato non può essere modificato. Potete tuttavia aggiungere e modificare altri processi, come un lavoro in background, nella pagina Processi dell’applicazione dopo la distribuzione.
  • Comando di avvio: Il comando di avvio del processo (non obbligatorio).
  • Dimensione del pod: La capacità del pod di cui pensate di aver bisogno per il processo.
  • Numero di istanze: Il numero di istanze per il vostro processo (massimo 50).

Notate che è possibile semplicemente cliccare su Continua senza compilare il campo Comando di avvio, poiché Kinsta rileva automaticamente il comando richiesto durante la prima distribuzione.

Impostazione dei processi dell'applicazione.
Impostazione dei processi dell’applicazione.

Nell’ultimo passaggio, controllate i costi di utilizzo mensili calcolati per la vostra applicazione e confermate il metodo di pagamento. Al termine, cliccate sul pulsante Conferma metodo di pagamento.

Confermare i dettagli del pagamento.
Confermare i dettagli del pagamento.

E il gioco è fatto! Kinsta farà tutto il lavoro in background per servire la vostra applicazione.

Caricamento del processo di distribuzione dell'applicazione.
Caricamento del processo di distribuzione dell’applicazione.

Avrete accesso a tutti i dettagli del processo di distribuzione e all’URL temporaneo dell’applicazione, che potrete sostituire in seguito con il vostro dominio.

Distribuzione riuscita dell'applicazione Laravel 10 su MyKinsta.
Distribuzione riuscita dell’applicazione Laravel 10 su MyKinsta.

La vostra applicazione Laravel 10 è ora live su Kinsta, ma cosa succede se dovete apportare una modifica in produzione? E se volessimo cambiare l’attributo href di un tag di ancoraggio?

Poiché abbiamo attivato l’opzione Distribuzione automatica su commit, MyKinsta rileverà tutte le modifiche apportate al ramo distribuito e aggiornerà automaticamente l’applicazione live di conseguenza.

8. Collegare Laravel 10 al Database MySQL

Ora che abbiamo distribuito la nostra applicazione Laravel 10, possiamo creare facilmente un database e collegarlo alla nostra applicazione. Tutto quello che dovete fare è cliccare su Applicazioni nel menu di navigazione a sinistra, poi su Aggiungi servizio e selezionare Database.

Aggiunta di un nuovo database in MyKinsta.
Aggiunta di un nuovo database in MyKinsta.

Dopo aver compilato tutti i campi, cliccate su Crea database. In questo modo verrà creato un nuovo database pronto per le connessioni interne ed esterne. Nel nostro scenario, abbiamo bisogno di una connessione interna al progetto Laravel 10 che abbiamo distribuito.

Per farlo, dovete solo cliccare su Aggiungi applicazione nella sezione Connessioni interne e selezionare l’applicazione. Potete selezionare la casella Aggiungi variabili d’ambiente all’applicazione e MyKinsta inserirà tutte le variabili di .env di cui l’applicazione ha bisogno.

Collegare un database a un'applicazione Laravel 10.
Collegare un database a un’applicazione Laravel 10.

A questo punto la vostra applicazione Laravel 10 è distribuita e collegata a un database.

Come Contribuire a Laravel 10

Sebbene Laravel sia gestito da un team centrale, è sviluppato attivamente da oltre 3.000 collaboratori volontari.

Volete essere uno di questi collaboratori e contribuire a plasmare il futuro di Laravel? Se la vostra risposta è affermativa, potreste aiutare gli sviluppatori di tutto il mondo aggiungendo una nuova funzionalità, risolvendo un bug o addirittura riscrivendo una parte poco chiara della documentazione.

Per contribuire a Laravel 10, ecco cosa fare:

  1. Andate al repository GitHub di Laravel e controllate le richieste di pull contrassegnate con [10.x] nel titolo. In questo modo avrete un quadro chiaro di tutte le richieste di pull per Laravel 10. Se una delle PR riguarda il contributo che intendevate apportare, verificate se è possibile migliorarlo.
  2. Se il contributo che intendete apportare non è ancora stato affrontato da qualcun altro, potete creare voi stessi una PR.
  3. Non tutto vale la pena di essere aggiunto al codice del framework. Pertanto, cercate di implementare solo i miglioramenti che saranno facili da mantenere in futuro e che aiuteranno la maggior parte della comunità di Laravel.
  4. Assicuratevi di rispettare le linee guida per la contribuzione di Laravel per avere maggiori possibilità che le vostre modifiche vengano unite al framework.

Un altro motivo per amare Laravel 10 è che vi permette di vincere soldi per i vostri contributi con la caccia ai bug! La analizzeremo nel prossimo paragrafo.

Concorso Laravel 10 per la Caccia ai bug

Concorso per la caccia ai bug di Laravel 10.
Concorso per la caccia ai bug di Laravel 10.

Laravel 10 ha annunciato un eccellente concorso in cui una delle persone collaboratrici ha la possibilità di vincere 1.000 dollari. Si tratta del primo concorso di questo tipo nella storia di Laravel. È stato progettato per incoraggiare la comunità a trovare e correggere i bug nascosti in Laravel 10.

Le regole sono semplici:

  • Solo le PR inviate al ramo 10.x del repository laravel/framework sono ammissibili.
  • Sono state prese in considerazione solo le correzioni di bug “autentici”. Nuove funzionalità, refactoring e correzioni di errori di battitura non sono stati presi in considerazione.
  • Ogni correzione di bug deve essere supportata da un test.
  • Le correzioni di bug accettate sono state etichettate su GitHub e un vincitore casuale s farà annunciato dopo la conclusione del concorso.

Il concorso si è concluso con il rilascio della prima versione stabile di Laravel 10 il 14 febbraio 2023.

Riepilogo

Finora Laravel 10 sembra essere estremamente promettente e non vediamo l’ora di scoprire tutte le novità che porterà nel mondo PHP.

Nel frattempo, se state cercando altri modi per migliorare le prestazioni della vostra applicazione Laravel, potreste prendere in considerazione l’idea di passare a un provider di hosting premium. Le soluzioni di hosting per applicazioni di Kinsta sono tra le più veloci, sicure e facili da usare del settore e sono state progettate appositamente per gli sviluppatori, offrendo un’ottimizzazione della produzione e un’assistenza esperta 24 ore su 24 e 7 giorni su 7 da parte dei nostri sviluppatori esperti.

Mostafa Said

I’m Mostafa, a full-stack developer with a knack for all things Laravel, Inertia, and JavaScript frameworks. When I'm not coding, you can find me sharing my knowledge through tutorials, diving into hackathons (and winning a few), and spreading the love for tech by teaching what I've learned.