{"id":65349,"date":"2023-02-14T16:06:50","date_gmt":"2023-02-14T15:06:50","guid":{"rendered":"https:\/\/kinsta.com\/it\/?p=65349&#038;preview=true&#038;preview_id=65349"},"modified":"2023-03-07T23:02:00","modified_gmt":"2023-03-07T22:02:00","slug":"laravel-10","status":"publish","type":"post","link":"https:\/\/kinsta.com\/it\/blog\/laravel-10\/","title":{"rendered":"Cosa c&#8217;\u00e8 di Nuovo in Laravel 10: Analisi Approfondita degli Aggiornamenti e delle Funzionalit\u00e0 Pi\u00f9 Recenti"},"content":{"rendered":"<p>Dopo oltre un decennio dall&#8217;introduzione del popolarissimo <a href=\"https:\/\/kinsta.com\/it\/blog\/framework-laravel\/\">framework Laravel<\/a>, vi siete mai chiesti cos&#8217;altro possa offrire Laravel agli sviluppatori PHP?<\/p>\n<p>Considerando quanto abbia gi\u00e0 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\u00f9 semplice in circolazione.<\/p>\n\n<p>Dunque, Laravel ha ancora in serbo altre sorprese per gli <a href=\"https:\/\/kinsta.com\/it\/blog\/sviluppatore-laravel\/\">sviluppatori di Laravel<\/a>? Oppure ha esaurito tutti i mezzi possibili per supportare gli sviluppatori PHP?<\/p>\n<p>Una cosa \u00e8 certa: sappiamo che Laravel 10 ha molto da offrire, ed \u00e8 ci\u00f2 che vi illustreremo in questo articolo, mentre vi accompagneremo in un tour attraverso le nuove funzionalit\u00e0, le correzioni, i metodi e i pacchetti appena deprecati di Laravel 10.<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc><\/p>\n<h2>Programma di Rilascio di Laravel<\/h2>\n<p>Il team di Laravel era solito rilasciare due versioni principali all&#8217;anno (una ogni sei mesi).<\/p>\n<p>Tuttavia, il ciclo di rilascio \u00e8 stato modificato quando Taylor Otwell, il creatore di Laravel, ha <a href=\"https:\/\/blog.laravel.com\/updates-to-laravels-versioning-policy\" target=\"_blank\" rel=\"noopener noreferrer\">annunciato<\/a> che ogni anno sarebbe stata rilasciata un&#8217;unica versione principale. Questo ha permesso al team principale e alla comunit\u00e0 di dedicare pi\u00f9 tempo e sforzi a una versione specifica del framework e di introdurre nuove potenti funzionalit\u00e0 senza apportare modifiche.<\/p>\n<p>Il rilascio di Laravel 10 era previsto per il 7 febbraio 2023, dopo il rilascio di <a href=\"https:\/\/kinsta.com\/it\/blog\/laravel-9\/\">Laravel 9<\/a> l&#8217;8 febbraio 2022. Tuttavia, il team aveva bisogno di pi\u00f9 tempo per finalizzare la sua opera d&#8217;arte e Laravel 10 \u00e8 stato pubblicato il 14 febbraio 2023.<\/p>\n<p>Il rilascio di Laravel 11 \u00e8 previsto per il primo trimestre di febbraio 2024.<\/p>\n<p>Inoltre, secondo la <a href=\"https:\/\/laravel.com\/docs\/10.x\/releases#support-policy\" target=\"_blank\" rel=\"noopener noreferrer\">politica di supporto<\/a>, le correzioni dei bug vengono offerte per 18 mesi e gli aggiornamenti di sicurezza per due anni per tutte le versioni di Laravel.<\/p>\n<p>Di seguito sono riportati i tempi previsti per la correzione dei bug e gli aggiornamenti di sicurezza:<\/p>\n<ul>\n<li>Laravel 9 continuer\u00e0 a ricevere correzioni di bug fino all&#8217;8 agosto 2023 e correzioni di sicurezza fino al 6 febbraio 2024.<\/li>\n<li>Laravel 10 ricever\u00e0 correzioni di bug fino al 6 agosto 2024 e correzioni di sicurezza fino al 4 febbraio 2025.<\/li>\n<li>Per Laravel 11 sono previste correzioni di bug fino al 5 agosto 2025 e correzioni di sicurezza fino al 3 febbraio 2026.<\/li>\n<\/ul>\n<h2>\u00c8 Necessario Aggiornare a Laravel 10?<\/h2>\n<p>\u00c8 importante ricordare che non \u00e8 sempre necessario aggiornare la versione di Laravel della nostra applicazione all&#8217;ultima versione non appena viene rilasciata una nuova versione.<\/p>\n<p>Laravel \u00e8 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\u00f2 significa che anche se la versione del framework che utilizziamo non \u00e8 pi\u00f9 supportata, l&#8217;applicazione continuer\u00e0 a funzionare; dovremo solo occuparci della sua manutenzione.<\/p>\n<p>Di conseguenza, \u00e8 ampiamente suggerito che la stabilit\u00e0 dell&#8217;applicazione sia prioritaria rispetto agli aggiornamenti del framework.<\/p>\n<p>In breve, dovreste considerare l&#8217;aggiornamento a Laravel 10 quando:<\/p>\n<ul>\n<li>L&#8217;applicazione \u00e8 stabile con la versione attuale e funziona senza problemi.<\/li>\n<li>La nuova versione aggiunge una funzionalit\u00e0 necessaria all&#8217;applicazione o risolve un problema che l&#8217;applicazione sta riscontrando.<\/li>\n<li>L&#8217;applicazione sar\u00e0 ben testata prima che le modifiche dell&#8217;aggiornamento vengano messe in produzione.<\/li>\n<\/ul>\n<h2>Gli Aggiornamenti pi\u00f9 Importanti di Laravel 10<\/h2>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/Untitled-21.png\" alt=\"Laravel 10.\" width=\"1024\" height=\"576\"><figcaption class=\"wp-caption-text\">Laravel 10.<\/figcaption><\/figure>\n<p>Kinsta \u00e8 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&#8217;utilizzo di tutte le nuove funzionalit\u00e0. Vi consigliamo quindi di contrassegnare questa pagina con un segnalibro e di consultarla di tanto in tanto.<\/p>\n<h3>Nuove Funzionalit\u00e0 e Aggiornamenti di Laravel 10<\/h3>\n<p>Non c&#8217;\u00e8 dubbio che la parte pi\u00f9 eccitante di ogni nuova release sia l&#8217;aggiunta di nuove funzionalit\u00e0. Quindi, senza ulteriori indugi, iniziamo a dare un&#8217;occhiata alle nuove funzionalit\u00e0 e agli aggiornamenti di Laravel 10.<\/p>\n<h4>1. PHP 8.1: Il Cuore di Laravel 10<\/h4>\n<p>PHP 8.1 \u00e8 la versione di PHP minima richiesta in Laravel 10. Alcune funzionalit\u00e0 di PHP 8.1, come le propriet\u00e0 readonly e array_is_list, sono utilizzate in Laravel 10.<\/p>\n<h4>2. Supporto per PHP 8.2<\/h4>\n<p>PHP 8.2 \u00e8 stato rilasciato l&#8217;8 dicembre 2022, solo due mesi prima della data di rilascio di Laravel 10. Tuttavia, questo non dovrebbe allarmarvi n\u00e9 impedirvi di utilizzare le funzioni di PHP 8.2, poich\u00e9 senza fare nulla di pi\u00f9, Laravel 10 \u00e8 pronto per PHP 8.2.<\/p>\n<p>Infatti, l&#8217;intero ecosistema di Laravel, tra cui Forge, Vapor ed Envoyer, supporta PHP 8.2 ed \u00e8 persino possibile usare <a href=\"https:\/\/blog.laravel.com\/laravel-loves-php-82\" target=\"_blank\" rel=\"noopener noreferrer\">PHP 8.2 con Laravel 9<\/a>. Fantastico!<\/p>\n<h4>3. Aggiornamento dei Pacchetti Ufficiali di Laravel<\/h4>\n<p>Non solo il framework \u00e8 curato e aggiornato regolarmente, ma lo sono anche tutti i pacchetti ufficiali e l&#8217;ecosistema.<\/p>\n<p>Di seguito elenchiamo i pi\u00f9 recenti pacchetti ufficiali di Laravel che sono stati aggiornati per supportare Laravel 10:<\/p>\n<ol>\n<li>Breeze<\/li>\n<li>Stripe Cashier<\/li>\n<li>Dusk<\/li>\n<li>Horizon<\/li>\n<li>Installatore<\/li>\n<li>Jetstream<\/li>\n<li>Passaporto<\/li>\n<li>Pint<\/li>\n<li>Vela<\/li>\n<li>Scout<\/li>\n<li>Valet<\/li>\n<\/ol>\n<p>Un&#8217;altra chicca per gli appassionati di Rails, Vue, React e Svelte: <a href=\"https:\/\/kinsta.com\/it\/blog\/laravel-inertia\/\">Inertiajs 1.0.1<\/a> supporta anche Laravel 10.<\/p>\n<h4>4. Aggiornamento della Versione di Predis<\/h4>\n<p>Predis \u00e8 un solido client <a href=\"https:\/\/kinsta.com\/it\/blog\/database-in-memory\/\">Redis<\/a> per PHP che pu\u00f2 aiutarti a sfruttare <a href=\"https:\/\/kinsta.com\/it\/blog\/caching-laravel\/\">al meglio la cache<\/a> per offrire un&#8217;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\u00f9 Predis 1.<\/p>\n<p>Sebbene la documentazione di Laravel <a href=\"https:\/\/laravel.com\/docs\/10.x\/redis\" target=\"_blank\" rel=\"noopener noreferrer\">indichi Predis<\/a> come pacchetto per interagire con Redis, \u00e8 possibile anche utilizzare l&#8217;<a href=\"https:\/\/github.com\/phpredis\/phpredis\/\" target=\"_blank\" rel=\"noopener noreferrer\">estensione PHP ufficiale<\/a>. Questa estensione fornisce un&#8217;API per comunicare con i server Redis.<\/p>\n<h4>5. Dichiarazioni di Tipo Nativo<\/h4>\n<p>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.<\/p>\n<p>Il modo migliore per spiegare questo cambiamento \u00e8 con un semplice esempio. Invece di avere una funzione come questa:<\/p>\n<pre><code class=\"language-php\">\/**\n* Determine whether the user can create models.\n*\n* @param {{ namespacedUserModel }} $user\n* @return IlluminateAuthAccessResponse|bool\n*\/\n\npublic function create({{ user }} $user)\n{\n  \/\/\n}<\/code><\/pre>\n<p>&#8230; avr\u00e0 l&#8217;aspetto seguente:<\/p>\n<pre><code class=\"language-php\">\/**\n* Determine whether the user can create models.\n*\/\n\npublic function create({{ user }} $user): bool\n{\n  \/\/\n}<\/code><\/pre>\n<p>Questa modifica \u00e8 a puro vantaggio dell&#8217;esperienza dello sviluppatore, in quanto gli IDE conosceranno la forma del parametro e della risposta previsti. Fornir\u00e0 una migliore chiarezza dei tipi quando non \u00e8 possibile farlo attraverso i tipi nativi di PHP. Di conseguenza, aiuter\u00e0 gli editor di codice a funzionare meglio con le funzioni di completamento automatico.<\/p>\n<h4>6. Tutte le Regole di Validazione Invocabili per Impostazione Predefinita<\/h4>\n<p>Prima, se volevate creare una regola di validazione invocabile in Laravel 9, dovevate aggiungere un flag <code>--invokable<\/code> dopo il comando Artisan. Questo non \u00e8 pi\u00f9 necessario perch\u00e9 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:<\/p>\n<pre><code class=\"language-php\">php artisan make:rule CustomRule<\/code><\/pre>\n<h4>7. Supporto Nativo per la Modifica delle Colonne<\/h4>\n<p>Nel tentativo di eliminare la necessit\u00e0 del pacchetto DBAL (<code>doctrine\/dbal<\/code>) quando si utilizza <code>change()<\/code> per modificare le colonne, in Laravel 10 \u00e8 stata introdotta una nuova funzionalit\u00e0 che consente agli sviluppatori di utilizzare il metodo <code>change()<\/code> e modificare le colonne con <a href=\"https:\/\/kinsta.com\/it\/blog\/postgresql-vs-sql-server\/\">MySQL, PostgreSQL<\/a> e <a href=\"https:\/\/kinsta.com\/it\/blog\/postgresql-vs-sql-server\/\">SQL Server<\/a> senza la necessit\u00e0 di pacchetti aggiuntivi. Si tratta di un <a href=\"https:\/\/github.com\/laravel\/framework\/pull\/45487#issuecomment-1371500000\">cambiamento significativo e rischioso<\/a>, ma crediamo che ne valga la pena perch\u00e9 eliminer\u00e0 la dipendenza da un pacchetto aggiuntivo.<\/p>\n<p>Per capire meglio la nuova funzione, date un&#8217;occhiata all&#8217;esempio qui sotto:<\/p>\n<pre><code class=\"language-php\">$table-&gt;integer('user_balance')-&gt;unsigned()-&gt;default(0)-&gt;comment('balance'); \/\/ `user_balance` is an integer, unsigned, defaults to '0', and column comment is 'balance'<\/code><\/pre>\n<p>Supponiamo di avere una colonna per <code>user_balance<\/code> e di volerne cambiare il tipo. A partire da Laravel 10, possiamo semplicemente fare cos\u00ec:<\/p>\n<pre><code class=\"language-php\">$table-&gt;bigInteger('user_balance')-&gt;change(); \/\/ This will change `user_balance` to bigInteger instead of just integer<\/code><\/pre>\n<p>Il codice precedente cambier\u00e0 con successo il tipo della colonna, ma eliminer\u00e0 anche gli attributi <code>UNSIGNED<\/code>, <code>DEFAULT<\/code> e <code>COMMENT<\/code>. Pertanto, \u00e8 importante ricordarsi di aggiungere tutti gli attributi quando si cambia il tipo di una colonna:<\/p>\n<pre><code class=\"language-php\">$table-&gt;bigInteger('user_balance')-&gt;unsigned()-&gt;default(0)-&gt;comment('balance')-&gt;change();<\/code><\/pre>\n<p>Nel caso in cui abbiate pi\u00f9 <a href=\"https:\/\/kinsta.com\/it\/blog\/database-laravel\/\">connessioni al database<\/a> e abbiate gi\u00e0 installato DBAL, \u00e8 consigliabile chiamare il metodo <code>Schema::useNativeSchemaOperationsIfPossible()<\/code> all&#8217;interno del metodo di avvio in <code>AppProvidersAppServiceProvider<\/code> 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):<\/p>\n<pre><code class=\"language-php\">use IlluminateSupportFacadesSchema;\nclass AppServiceProvider extends ServiceProvider\n{\n  public function boot()\n  {\n    Schema::useNativeSchemaOperationsIfPossible();\n  }\n}<\/code><\/pre>\n<h4>8. Recupero Nativo del Tipo di Colonna<\/h4>\n<p>Un&#8217;altra caratteristica degna di nota di Laravel 10 \u00e8 la possibilit\u00e0 di utilizzare il metodo <code>Schema::getColumnType<\/code> senza doversi affidare al pacchetto <code>doctrine\/dbal<\/code>. Attualmente utilizziamo <code>Schema::getColumnType<\/code> 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.<\/p>\n<p>In Laravel 10, invece, il nuovo metodo <code>Schema::getColumnType<\/code> restituisce il tipo di colonna effettivo anzich\u00e9 l&#8217;equivalente DBAL. Inoltre, permette di scrivere test di integrazione per la nuova funzione di modifica nativa delle colonne. \u00c8 possibile utilizzare questa funzione per ottenere il nome del tipo di dati o l&#8217;intera definizione del tipo della colonna specificata:<\/p>\n<pre><code class=\"language-php\">Schema::getColumnType('products', 'price'); \/\/ decimal<\/code><\/pre>\n<h4>9. Algoritmo di Hashing pi\u00f9 Veloce<\/h4>\n<p>xxHash \u00e8 un algoritmo di hash incredibilmente veloce. \u00c8 caratterizzato da una grande casualit\u00e0 e dispersione dell&#8217;output, oltre che dall&#8217;unicit\u00e0 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\u00ec affidabile in Laravel 10 \u00e8 l&#8217;ideale.<\/p>\n<p>Vale la pena ricordare che <a href=\"https:\/\/github.com\/laravel\/framework\/pull\/45371#issuecomment-1359597016\" target=\"_blank\" rel=\"noopener noreferrer\">Taylor ha evidenziato<\/a>, 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&#8217;esatto formato dell&#8217;hash SHA-1, che \u00e8 l&#8217;algoritmo utilizzato da Laravel per l&#8217;hashing. Pertanto, se state pianificando un aggiornamento a Laravel 10, sarebbe opportuno ricontrollare questo aspetto in tutti i pacchetti di terze parti utilizzati nell&#8217;applicazione.<\/p>\n<h4>10. <code>whereExists()<\/code> Supporto del Metodo per Eloquent Builder<\/h4>\n<p>Attualmente, l&#8217;utilizzo di <code>whereExists()<\/code> richiede la configurazione della query annidata tramite una chiusura. Fortunatamente, con Laravel 10 \u00e8 ora possibile includere un Eloquent Builder come query annidata. Questo permette di utilizzare i metodi personalizzati del costruttore, gli ambiti del modello e cos\u00ec via.<\/p>\n<p>Ad esempio, di solito lo facciamo se vogliamo utilizzare <code>whereExists()<\/code>:<\/p>\n<pre><code class=\"language-php\">Order::whereExists(function ($query) {\n  $query-&gt;from('products')-&gt;whereColumn('products.order_id', 'orders.id');\n});<\/code><\/pre>\n<p>Con Laravel 10, invece, possiamo fare cos\u00ec:<\/p>\n<pre><code class=\"language-php\">Order::whereExists(\n  Product::whereColumn('products.order_id', 'orders.id')\n);<\/code><\/pre>\n<h4>11. Ottimizzazione dell&#8217;Eager Loading<\/h4>\n<p>Una delle novit\u00e0 pi\u00f9 interessanti di Laravel 10 \u00e8 l&#8217;<a href=\"https:\/\/kinsta.com\/it\/blog\/prestazioni-laravel\/#11-make-use-of-eager-loading\">ottimizzazione del caricamento anticipato<\/a> quando non ci sono chiavi da caricare. Questa modifica \u00e8 pi\u00f9 una correzione che una funzionalit\u00e0, in quanto affronta un problema attuale in cui le relazioni di eager loading causano l&#8217;esecuzione di un gran numero di query impossibili.<\/p>\n<p>Attualmente, quando si caricano relazioni che non hanno chiavi da caricare, Laravel esegue una query simile a questa:<\/p>\n<pre><code class=\"language-php\">select * from `table_name` where 0 = 1<\/code><\/pre>\n<p>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\u00e0 di effettuare inutili query al database.<\/p>\n<h4>12. <code>$path<\/code> Opzionale per i metodi del filesystem<\/h4>\n<p>In Laravel 10, il parametro <code>$path<\/code> \u00e8 opzionale per i seguenti metodi:<\/p>\n<ul>\n<li><code>FilesystemAdapter#putFile<\/code><\/li>\n<li><code>FilesystemAdapter#putFileAs<\/code><\/li>\n<li><code>UploadedFile#store<\/code><\/li>\n<li><code>UploadedFile#storeAs<\/code><\/li>\n<li><code>UploadedFile#storePublicly<\/code><\/li>\n<li><code>UploadedFile#storePubliclyAs<\/code><\/li>\n<\/ul>\n<p>Quindi, invece di eseguire questa operazione per memorizzare un file caricato su <a href=\"https:\/\/kinsta.com\/it\/blog\/backup-amazon-s3\/\">Amazon S3<\/a>:<\/p>\n<pre><code class=\"language-php\">Storage::disk('s3')-&gt;putFile(\u2018post\/images', $uploadedFile);<\/code><\/pre>\n<p>&#8230; possiamo fare cos\u00ec:<\/p>\n<pre><code class=\"language-php\">Storage::disk(Disk::PostImages)-&gt;putFile($uploadedFile)<\/code><\/pre>\n<h4>13. Espressioni di Database e Formattazione Specifica per la Grammatica<\/h4>\n<p>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\u00f9 database.<\/p>\n<p>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:<\/p>\n<pre><code class=\"language-php\">DB::table(\u2018visitors')\n-&gt;when(isPostgreSQL(), fn ($query) =&gt; $query-&gt;select(DB::raw('coalesce(NULL, \"user\", \"guest\") AS \"First Visitor\"')))\n-&gt;when(isMySQL(), fn ($query) =&gt; $query-&gt;select(DB::raw('coalesce(NULL, `user`, `guest`) AS `First Visitor`')))<\/code><\/pre>\n<p>Nel codice sopra riportato, stiamo utilizzando la <a href=\"https:\/\/www.w3schools.com\/sql\/func_sqlserver_coalesce.asp\" target=\"_blank\" rel=\"noopener noreferrer\">funzione<code>COALESCE()<\/code><\/a> per restituire il primo valore non nullo come alias chiamato <strong>primo visitatore<\/strong>. Quindi, ogni volta che dovremo eseguire un&#8217;operazione di questo tipo, dovremo scrivere nuovamente il codice del database.<\/p>\n<p>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\u00e0 la necessit\u00e0 di scrivere il codice grezzo del database quando vorremo utilizzare altre funzionalit\u00e0 del database.<\/p>\n<p>Tornando all&#8217;esempio precedente, seguiamo il nuovo approccio di Laravel 10 per ottenere lo stesso risultato senza utilizzare la sintassi del codice del database.<\/p>\n<p>Per prima cosa, dobbiamo creare due classi: una per l&#8217;aliasing e una per l&#8217;utilizzo della funzione <code>COALESCE()<\/code>:<\/p>\n<pre><code class=\"language-php\">class Alias implements Expression\n{\n  public function __construct(\n    public readonly Expression|string $expression,\n    public readonly string $name,\n  ) { }\n  public function getValue(Grammar $grammar): string\n  {\n    return match ($grammar-&gt;isExpression($this-&gt;expression)) {\n      true =&gt; \"{$grammar-&gt;getValue($this-&gt;expression)} as {$grammar-&gt;wrap($this-&gt;name)}\",\n      false =&gt; $grammar-&gt;wrap(\"{$this-&gt;name} as {$this-&gt;name}\"),\n    };\n  }\n}\nclass Coalesce implements Expression\n{\n  public function __construct(\n    public readonly array $expressions,\n  ) { }\n  public function getValue(Grammar $grammar): string\n  {\n    $expressions = array_map(function ($expression) use($grammar): string {\n      return match ($grammar-&gt;isExpression($expression)) {\n        true =&gt; $grammar-&gt;getValue($expression),\n        false =&gt; $grammar-&gt;wrap($expression),\n      };\n    }, $this-&gt;expressions);\n    $expressions = implode(', ', $expressions);\n    return \"coalesce({$expressions})\";\n  }\n}<\/code><\/pre>\n<p>Quindi, possiamo procedere in questo modo per ottenere il risultato desiderato sia per MySQL che per PostgreSQL:<\/p>\n<pre><code class=\"language-php\">DB::table('visitors') -&gt;select(new Alias(new Coalesce([NULL, 'user', 'guest']), 'First Visitor'));<\/code><\/pre>\n<p>Potreste pensare che sia un lavoro troppo impegnativo da scrivere, ma ne vale sicuramente la pena perch\u00e9 dovrete scriverlo solo una volta e vi risparmier\u00e0 il fastidio di cambiare sintassi quando avrete a che fare con pi\u00f9 database.<\/p>\n<p>Inoltre, secondo il creatore della <a href=\"https:\/\/github.com\/laravel\/framework\/pull\/44784\" target=\"_blank\" rel=\"noopener noreferrer\">richiesta di pull<\/a>, Tobias Petry, questa modifica aprir\u00e0 le porte a numerose possibilit\u00e0 di pacchetti che forniranno le classi di espressione grezza pi\u00f9 comuni. Ha anche dichiarato che le metter\u00e0 a disposizione della comunit\u00e0 in un <a href=\"https:\/\/github.com\/tpetry\/laravel-query-expressions\" target=\"_blank\" rel=\"noopener noreferrer\">pacchetto dedicato<\/a> dopo il rilascio di Laravel 10.<\/p>\n<h4>14. Aggiornamento di SQL Server per l&#8217;Utilizzo di <code>FETCH<\/code> e <code>OFFSET<\/code> per le Query che non Includono un <code>orderBy<\/code><\/h4>\n<p>Quando utilizziamo <code>orderBy<\/code> in una query come questa:<\/p>\n<pre><code class=\"language-php\">$builder-&gt;select('*')-&gt;from('users')-&gt;skip(11)-&gt;take(10)-&gt;orderBy('email', 'desc');<\/code><\/pre>\n<p>Laravel produce un&#8217;istruzione SQL che utilizza <a href=\"https:\/\/www.geeksforgeeks.org\/sql-offset-fetch-clause\/\" target=\"_blank\" rel=\"noopener noreferrer\"><code>FETCH<\/code> e <code>OFFSET<\/code><\/a>:<\/p>\n<pre><code class=\"language-sql\">select * from [users] order by [email] desc offset 11 rows fetch next 10 rows only<\/code><\/pre>\n<p>Tuttavia, nelle versioni precedenti di Laravel, se si elimina <code>orderBy<\/code> dalla query, si ritorna al vecchio metodo di compensazione dei risultati:<\/p>\n<pre><code class=\"language-php\">$builder-&gt;select('*')-&gt;from('users')-&gt;skip(11)-&gt;take(10);<\/code><\/pre>\n<pre><code class=\"language-sql\">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<\/code><\/pre>\n<p>Ma ora in Laravel 10, questo <a href=\"https:\/\/github.com\/laravel\/framework\/pull\/44937\" target=\"_blank\" rel=\"noopener noreferrer\">nuovo aggiornamento<\/a> consentir\u00e0 alla vostra applicazione Laravel 10 di utilizzare <code>FETCH<\/code> e <code>OFFSET<\/code> anche quando <code>orderBy<\/code> non \u00e8 presente:<\/p>\n<pre><code class=\"language-sql\">select * from [users] order by (SELECT 0) offset 10 rows fetch next 10 rows only<\/code><\/pre>\n<p>Questo aggiornamento <a href=\"https:\/\/gist.github.com\/dunhamjared\/cb40bbf294ed6f8e48bd60010a31b4f3\" target=\"_blank\" rel=\"noopener noreferrer\">migliora la velocit\u00e0 del 33%<\/a> e richiede meno passaggi di esecuzione.<\/p>\n<h4>15. Supporto PHPUnit 10<\/h4>\n<p>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 \u00e8 stata <a href=\"https:\/\/phpunit.de\/announcements\/phpunit-10.html\" target=\"_blank\" rel=\"noopener noreferrer\">rilasciata il 3 febbraio 2023<\/a>. Laravel 10 continuer\u00e0 a supportare le versioni 9 e 8 di PHPUnit.<\/p>\n<h4>16. Miglioramenti alla Sicurezza della Classe <code>Timebox<\/code><\/h4>\n<p>Laravel 10 include miglioramenti della sicurezza per la classe <code>Timebox<\/code>, che ha lo scopo di proteggere l&#8217;applicazione da <a href=\"https:\/\/tom.vg\/papers\/timeless-timing-attack_usenix2020.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">attacchi di temporizzazione senza tempo<\/a>. La classe <code>Timebox<\/code> \u00e8 implementata all&#8217;interno del metodo <code>hasValidCredentials<\/code>.<\/p>\n<p>La classe <code>Timebox<\/code> ora supporta la gestione delle eccezioni lanciate durante l&#8217;esecuzione di un callback di Timebox.<\/p>\n<h4>17. <code>dispatch()<\/code> Il Comportamento del Metodo \u00e8 lo Stesso in Tutto Laravel 10<\/h4>\n<p>Il metodo <code>dispatch()<\/code> all&#8217;interno del tratto <code>DispatchesJobs<\/code> ora verifica la presenza di lavori unici come la funzione helper globale <code>dispatch()<\/code>. In questo modo i metodi <code>dispatch()<\/code> adottano le stesse funzionalit\u00e0 in tutto Laravel 10.<\/p>\n<h4>18. Laravel Pennant<\/h4>\n<p>Se avete mai lavorato a un&#8217;applicazione web che viene costantemente aggiornata con nuove funzionalit\u00e0, sapete quanto siano vitali i flag delle funzionalit\u00e0. Tuttavia, preservare i flag delle funzionalit\u00e0 richiederebbe una notevole quantit\u00e0 di lavoro, ma non preoccupatevi, ci pensa Laravel con il nuovo pacchetto di base Laravel Pennant.<\/p>\n<p><a href=\"https:\/\/laravel.com\/docs\/10.x\/pennant\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel Pennant<\/a> offre una soluzione facile da usare per mantenere i flag delle funzionalit\u00e0. \u00c8 persino dotato di un driver per array in-memory e di un database.<\/p>\n<p>\u00c8 possibile definire facilmente una nuova caratteristica:<\/p>\n<pre><code class=\"language-php\">use LaravelPennantFeature;\nuse IlluminateSupportLottery;\nFeature::define('new-color-button', function () {\nreturn Lottery::odds(1, 10);\n});<\/code><\/pre>\n<p>Potrete cos\u00ec verificare se l&#8217;utente ha accesso o meno a questa funzione:<\/p>\n<pre><code class=\"language-php\">use LaravelPennantFeature;\nif (Feature::active('new-color-button')) {\n  \/\/ ...\n}<\/code><\/pre>\n<p>In Laravel Blade \u00e8 ancora pi\u00f9 bello:<\/p>\n<pre><code class=\"language-php\">@feature('new-color-button')\n\/\/ Kinsta Rules!!\n@endfeature<\/code><\/pre>\n<h4>19. Interazioni di Processo Laravel<\/h4>\n<p>Le nuove interazioni di processo di Laravel 10 rendono il test e l&#8217;esecuzione dei processi CLI un gioco da ragazzi. Offre un&#8217;API semplice per alleggerire l&#8217;onere dei test. Prendiamo l&#8217;esempio dal <a href=\"https:\/\/github.com\/laravel\/framework\/pull\/45314\" target=\"_blank\" rel=\"noopener noreferrer\">PR originale<\/a> di Taylor:<\/p>\n<pre><code class=\"language-php\">use IlluminateSupportFacadesProcess;\n$result = Process::run('ls -la');\n$result-&gt;successful();\n$result-&gt;failed();\n$result-&gt;exitCode();\n$result-&gt;output();\n$result-&gt;errorOutput();\n$result-&gt;throw();\n$result-&gt;throwIf(condition);<\/code><\/pre>\n<p>Probabilmente avrete notato quanto sia semplice e pulito il codice qui sopra. Passando alla costruzione dei processi, le cose non fanno che migliorare:<\/p>\n<pre><code class=\"language-php\">$result = Process::timeout(60)-&gt;path(base_path())-&gt;env([...])-&gt;run('ls -la');\n$result = Process::forever()-&gt;run('ls -la');<\/code><\/pre>\n<p>Ora, per utilizzare questa nuova funzione nei test, potete creare un nuovo processo fake come questo:<\/p>\n<pre><code class=\"language-php\">Process::fake([\n  'ls *' =&gt; Process::result('Hello From Kinsta'),\n]);<\/code><\/pre>\n<p>Quindi potete eseguire il processo fake e utilizzare le nuove <a href=\"https:\/\/laravel.com\/docs\/10.x\/processes#available-assertions\" target=\"_blank\" rel=\"noopener noreferrer\">asserzioni disponibili<\/a>:<\/p>\n<pre><code class=\"language-php\">$result = Process::run('ls -la');\nProcess::assertRan(function ($process, $result) {\n  return $process-&gt;command == 'ls -la';\n});\nProcess::assertRanTimes(function ($process, $result) {\n  return $process-&gt;command == 'ls -la';\n}, times: 1);\nProcess::assertNotRan(function ($process, $result) {\n  return $process-&gt;command == 'cat foo';\n});<\/code><\/pre>\n<h4>20. Scaffolding di Pest<\/h4>\n<p>Lo scaffolding dei test di Pest \u00e8 ora abilitato per impostazione predefinita quando si creano nuovi progetti Laravel. Per abilitare questa funzione, usate il flag <code>--pest<\/code> quando create una nuova applicazione con il programma di installazione di Laravel:<\/p>\n<pre><code class=\"language-php\">laravel new example-kinsta-app --pest<\/code><\/pre>\n<h4>21. Funzione di Aiuto per le Password a Stringa<\/h4>\n<p>Laravel 10 pu\u00f2 creare una password casuale e sicura con una determinata lunghezza:<\/p>\n<pre><code class=\"language-php\">$password = Str::password(12);<\/code><\/pre>\n<h3>Metodi e Pacchetti Deprecati in Laravel 10<\/h3>\n<p>A seguire, analizzeremo i pacchetti e i metodi che sono stati eliminati con il rilascio di Laravel 10.<\/p>\n<h4>Laravel 10 Dice Addio a PHP 8.0<\/h4>\n<p>Il framework Laravel abbandona il supporto a PHP 8.0 in Laravel 10. Pertanto, se avete intenzione di aggiornare l&#8217;applicazione a Laravel 10, dovrete prima aggiornare la versione di PHP a <a href=\"https:\/\/kinsta.com\/it\/blog\/php-8-1\/\">PHP 8.1<\/a> o <a href=\"https:\/\/kinsta.com\/it\/blog\/php-8-2\/\">PHP 8.2<\/a>.<\/p>\n<h4>Rimozione dei Metodi Deprecati<\/h4>\n<p>La <a href=\"https:\/\/laravel.com\/docs\/10.x\/upgrade\" target=\"_blank\" rel=\"noopener noreferrer\">documentazione di Laravel<\/a> viene aggiornata con tutte le modifiche e le deprecazioni pi\u00f9 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.<\/p>\n<p>Ecco un elenco di alcune deprecazioni:<\/p>\n<ul>\n<li>Il metodo <code>Route::home<\/code> (deprecato in Laravel 9)<\/li>\n<li>Funzioni e metodi intorno a <code>dispatchNow<\/code>, deprecato per incoraggiare gli sviluppatori a utilizzare <a href=\"https:\/\/laravel.com\/docs\/10.x\/queues#synchronous-dispatching\" target=\"_blank\" rel=\"noopener noreferrer\"><code>dispatchSync<\/code><\/a>, l&#8217;unico metodo supportato per il dispatch immediato<\/li>\n<li>Il metodo <code>getBaseQuery<\/code>, che ha un equivalente <code>toBase<\/code><\/li>\n<li>La classe <code>MaintenanceModeException<\/code><\/li>\n<li>Il tratto <code>MocksApplicationServices<\/code><\/li>\n<li>Il metodo <code>Mail::failures<\/code> del mail fake<\/li>\n<li>La propriet\u00e0 <code>$dates<\/code> (usa <a href=\"https:\/\/laravel.com\/docs\/9.x\/eloquent-mutators#attribute-casting\" target=\"_blank\" rel=\"noopener noreferrer\"><code>$casts<\/code><\/a> invece)<\/li>\n<li>Il metodo <code>assertTimesSent()<\/code><\/li>\n<li>Supporto per Predis 1 e DBAL 2<\/li>\n<li>Tutte le deprecazioni relative a <code>doctrine\/dbal<\/code> da quando Laravel ha abbandonato il supporto per la versione 2<\/li>\n<\/ul>\n<h2>Come Installare Laravel 10<\/h2>\n<p>Il team di Laravel si \u00e8 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.<\/p>\n<h3>Installare Laravel 10 su MacOS<\/h3>\n<p>Potete iniziare facilmente a utilizzare Laravel 10 su MacOS utilizzando <a href=\"https:\/\/kinsta.com\/it\/blog\/cosa-e-docker\/\">Docker<\/a> e <a href=\"https:\/\/laravel.com\/docs\/10.x\/sail\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel Sail<\/a>. Eseguite il seguente comando da terminale dalla directory in cui volete installare l&#8217;applicazione, tenendo presente che per il nome dell&#8217;app sono ammessi solo caratteri alfanumerici, trattini e trattini bassi:<\/p>\n<pre><code class=\"language-bash\">curl -s \"https:\/\/laravel.build\/example-kinsta-app\" | bash<\/code><\/pre>\n<p>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:<\/p>\n<pre><code class=\"language-bash\">.\/vendor\/bin\/sail up<\/code><\/pre>\n<p>Sail utilizzer\u00e0 la sua soluzione integrata per avviare il progetto Laravel utilizzando Docker e, una volta terminato, l&#8217;applicazione sar\u00e0 pronta su <code>http:\/\/localhost<\/code>.<\/p>\n<h3>Installare Laravel 10 su Windows 10 e 11<\/h3>\n<p><a href=\"https:\/\/docs.docker.com\/desktop\/\" target=\"_blank\" rel=\"noopener noreferrer\">Docker Desktop<\/a> pu\u00f2 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:<\/p>\n<ul>\n<li><strong><a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/wsl\/install\" target=\"_blank\" rel=\"noopener noreferrer\">Windows Subsystem for Linux 2 (WSL2)<\/a><\/strong> \u00e8 una funzione del sistema operativo Windows che permette di eseguire un file system Linux e strumenti a riga di comando Linux direttamente su Windows.<\/li>\n<li><strong><a href=\"https:\/\/learn.microsoft.com\/en-us\/virtualization\/hyper-v-on-windows\/quick-start\/enable-hyper-v\" target=\"_blank\" rel=\"noopener noreferrer\">Funzione Hyper-V Backend<\/a><\/strong> permette di creare e gestire una versione software di un computer nota come macchina virtuale.<\/li>\n<\/ul>\n<p>Una volta soddisfatti tutti i <a href=\"https:\/\/docs.docker.com\/desktop\/install\/windows-install\/#install-docker-desktop-on-windows\" target=\"_blank\" rel=\"noopener noreferrer\">requisiti di Docker<\/a>, potete eseguire il seguente comando nel terminale:<\/p>\n<pre><code class=\"language-bash\">curl -s https:\/\/laravel.build\/example-kinsta-app | bash<\/code><\/pre>\n<p>Utilizzate quindi Sail per eseguire l&#8217;applicazione su <code><a href=\"http:\/\/localhost\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/localhost<\/a><\/code> eseguendo il seguente comando dalla directory principale del vostro progetto Laravel 10 appena installato:<\/p>\n<pre><code class=\"language-bash\">.\/vendor\/bin\/sail up<\/code><\/pre>\n<p>A proposito, molti sviluppatori preferiscono il sistema operativo Linux ad altri sistemi operativi perch\u00e9 permette loro di lavorare in modo pi\u00f9 efficiente e veloce. Con WSL, potete godere della sicurezza, delle prestazioni e della compatibilit\u00e0 con i giochi di <a href=\"https:\/\/ubuntu.com\/tutorials\/install-ubuntu-on-wsl2-on-windows-10#1-overview\" target=\"_blank\" rel=\"noopener noreferrer\">Ubuntu<\/a>. Ubuntu \u00e8 una distribuzione o versione di Linux nota per la sua semplicit\u00e0 d&#8217;uso.<\/p>\n<p>Vi consigliamo di utilizzare <a href=\"https:\/\/code.visualstudio.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Visual Studio Code<\/a> e di installare l&#8217;<a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ms-vscode-remote.remote-wsl\">estensione ufficiale Microsoft WSL<\/a> per poter aprire qualsiasi cartella del Sottosistema Windows per Linux e sfruttare tutte le funzionalit\u00e0 di vscode. Inoltre, l&#8217;estensione <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ms-vscode-remote.vscode-remote-extensionpack\" target=\"_blank\" rel=\"noopener noreferrer\">Remote Development<\/a> \u00e8 un&#8217;altra opzione a cui si fa riferimento nella documentazione di Laravel.<\/p>\n<h3>Installare Laravel 10 con Composer<\/h3>\n<p>Che utilizziate macOS o Windows, Composer vi permette di essere operativi con Laravel 10 in pochissimo tempo.<\/p>\n<p>Per prima cosa dovete assicurarti di avere PHP \u2264 8.1, node, npm e Composer installati sul vostro computer.<\/p>\n<ul>\n<li><strong>Per macOS:<\/strong> Composer pu\u00f2 essere installato utilizzando <a href=\"https:\/\/brew.sh\/\" target=\"_blank\" rel=\"noopener noreferrer\">Homebrew<\/a>.<\/li>\n<li><strong>Per Windows:<\/strong> L&#8217;ultima versione stabile di Composer pu\u00f2 essere scaricata dal <a href=\"https:\/\/getcomposer.org\/doc\/00-intro.md#installation-windows\" target=\"_blank\" rel=\"noopener noreferrer\">sito ufficiale di Composer<\/a>.<\/li>\n<\/ul>\n<p>Una volta fatto, potete installare Laravel Installer a livello globale e utilizzarlo per installare la vostra nuova applicazione Laravel 10:<\/p>\n<pre><code class=\"language-bash\">composer global require laravel\/installer\nlaravel new example-kinsta-app<\/code><\/pre>\n<p>Oppure, potete creare una nuova applicazione Laravel 10 direttamente utilizzando solo Composer:<\/p>\n<pre><code class=\"language-bash\">composer create-project laravel\/laravel example-kinsta-app<\/code><\/pre>\n<h2>Come installare Laravel 11<\/h2>\n<p>Manca ancora un anno al rilascio di Laravel 11. Tuttavia, Laravel 11 \u00e8 gi\u00e0 disponibile per farvi testare le sue caratteristiche. Non solo, include anche <a href=\"https:\/\/github.com\/laravel\/framework\/pulls?q=is%3Apr+is%3Amerged+%5B11.x%5D+in%3Atitle\" target=\"_blank\" rel=\"noopener noreferrer\">alcune PR unite su<\/a> GitHub, come ad esempio l&#8217;abbandono del supporto a PHP 8.1.<\/p>\n<p>Il flag <code>--dev<\/code> di Laravel Installer installa il ramo master dal repository <code>laravel\/laravel<\/code> e ora che Laravel 10 \u00e8 uscito, Laravel 11 sar\u00e0 disponibile sul ramo master. Se utilizzate Laravel Installer, non dovete fare altro che eseguire questo comando nel vostro terminale:<\/p>\n<pre><code class=\"language-php\">laravel new example-kinsta-app --dev<\/code><\/pre>\n<p>Oppure, se preferite usare <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">Composer<\/a>:<\/p>\n<pre><code class=\"language-php\">composer create-project --prefer-dist laravel\/laravel example-kinsta-app dev-master<\/code><\/pre>\n<p>Per capire meglio il comando Composer, ecco una breve spiegazione:<\/p>\n<ul>\n<li><strong><code>laravel\/laravel<\/code>:<\/strong> Il pacchetto per l&#8217;installazione di Laravel<\/li>\n<li><strong><code>example-kinsta-app<\/code>:<\/strong> La nuova directory per il vostro nuovo progetto (pu\u00f2 essere modificata)<\/li>\n<li><strong><code>dev-master<\/code>:<\/strong> La prossima versione di Laravel (in questo caso, Laravel 11)<\/li>\n<\/ul>\n<p>Dopo aver installato Laravel 11, potete confermare la versione navigando nella nuova directory <strong>example-kinsta-app<\/strong> ed eseguendo questo comando di Artisan:<\/p>\n<pre><code class=\"language-php\">$ php artisan --version\nLaravel Framework 11.x-dev<\/code><\/pre>\n<h2>Come Aggiornare un Progetto a Laravel 10<\/h2>\n<p>Siete tentati di aggiornare a Laravel 10? Il team di Laravel lavora duramente sulla documentazione per fornire una guida all&#8217;aggiornamento semplice e senza intoppi, coprendo ogni possibile modifica. Non esitate a consultare la <a href=\"https:\/\/laravel.com\/docs\/master\/upgrade#upgrade-10.0\" target=\"_blank\" rel=\"noopener noreferrer\">guida ufficiale all&#8217;aggiornamento a Laravel 10<\/a>.<\/p>\n<p>Dovreste anche tenere d&#8217;occhio <a href=\"https:\/\/laravelshift.com\/shifts\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel Shift<\/a> ora che Laravel 10 \u00e8 stato rilasciato. Laravel Shift offre un approccio semplice e automatizzato all&#8217;aggiornamento della vostra versione di Laravel.<\/p>\n<h2>Come Distribuire i Progetti Laravel 10<\/h2>\n<p>Il deploy di Laravel 10 non \u00e8 diverso dal <a href=\"https:\/\/docs.sevalla.com\/templates\/overview#laravel\">deploy di un progetto Laravel 9<\/a>.<\/p>\n<p>Ecco i requisiti del server:<\/p>\n<ul>\n<li>PHP \u2264 8.1<\/li>\n<li>Estensione PHP Ctype<\/li>\n<li>estensione PHP cURL<\/li>\n<li>Estensione DOM PHP<\/li>\n<li>Estensione PHP Fileinfo<\/li>\n<li>Estensione PHP Mbstring<\/li>\n<li>Estensione OpenSSL PHP<\/li>\n<li>Estensione PCRE PHP<\/li>\n<li>PDO Estensione PHP<\/li>\n<li>Estensione Tokenizer PHP<\/li>\n<li>Estensione PHP XML<\/li>\n<li>Estensione PHP del filtro<\/li>\n<li>Estensione Hash PHP<\/li>\n<li>Estensione PHP Session<\/li>\n<\/ul>\n<p>\u00c8 possibile distribuire e <a href=\"https:\/\/sevalla.com\/application-hosting\/\">ospitare il vostro progetto Laravel 10<\/a> su Kinsta in pochi minuti, dato che Laravel fa parte di una lunga lista di <a href=\"https:\/\/docs.sevalla.com\/applications\/reference\/faqs\">framework supportati<\/a> per le app ospitate.<\/p>\n<h3>Distribuzione di Laravel 10 su Kinsta: Guida passo per passo<\/h3>\n<p>L&#8217;<a href=\"https:\/\/sevalla.com\/application-hosting\/\">hosting e il deploy delle vostre applicazioni Laravel su Kinsta<\/a> offrono diversi vantaggi, tra cui quello di non doversi preoccupare della configurazione del deploy.<\/p>\n<p>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 \u00e8 noto come <a href=\"https:\/\/kinsta.com\/it\/mykinsta\/\">MyKinsta<\/a> e in questa sezione vi illustreremo i passaggi per distribuire un&#8217;applicazione Laravel 10 utilizzando questo strumento.<\/p>\n<h4>1. Preparare l&#8217;Applicazione<\/h4>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/Untitled-22.png\" alt=\"La homepage di un'applicazione Laravel 10 distribuita su Kinsta.\" width=\"1024\" height=\"473\"><figcaption class=\"wp-caption-text\">La homepage di un&#8217;applicazione Laravel 10 distribuita su Kinsta.<\/figcaption><\/figure>\n<p>Supponendo che abbiate un&#8217;applicazione Laravel 10 in locale, dobbiamo assicurarci che abbiate un <a href=\"https:\/\/kinsta.com\/it\/blog\/cosa-e-github\/\">repository GitHub disponibile<\/a>. Utilizzeremo questo repository per distribuire l&#8217;applicazione in seguito.<\/p>\n<p>Potete includere un file <strong>.htaccess<\/strong> nella directory principale della vostra applicazione che contenga quanto segue:<\/p>\n<pre><code class=\"language-bash\">&lt;IfModule mod_rewrite.c&gt;\nRewriteEngine On\nRewriteRule ^(.*)$ public\/$1 [L]\n&lt;\/IfModule&gt;<\/code><\/pre>\n<p>Per Laravel, questo reindirizza tutte le richieste a <strong>public\/index.php<\/strong>. Tuttavia, se necessario, potete aggiornare questo comando durante l&#8217;aggiunta dell&#8217;applicazione (fase<strong> Setup your processes<\/strong>) o dopo la distribuzione, nella pagina <strong>Processes<\/strong> dell&#8217;applicazione. Si pu\u00f2 utilizzare:<\/p>\n<ul>\n<li><code>heroku-php-apache2 \/public<\/code><\/li>\n<li><code>php artisan serve --host 0.0.0.0 --port 8080<\/code><\/li>\n<\/ul>\n<h4>2. Accedere a MyKinsta<\/h4>\n<figure style=\"width: 999px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/Untitled-23.png\" alt=\"La pagina di accesso a MyKinsta.\" width=\"999\" height=\"674\"><figcaption class=\"wp-caption-text\">La pagina di accesso a MyKinsta.<\/figcaption><\/figure>\n<p>Andate alla <a href=\"https:\/\/my.kinsta.com\/login?lang=it\" target=\"_blank\" rel=\"noopener noreferrer\">pagina di login di MyKinsta<\/a> e inserite il vostro indirizzo e-mail e la vostra password. Se non avete ancora un account, potete <a href=\"https:\/\/kinsta.com\/it\/registrazione\/?product_type=app-db\">registrarne uno nuovo<\/a> e ottenere uno sconto di 20 dollari sul primo mese di <a href=\"https:\/\/kinsta.com\/it\/prezzi\/?plan=visits-business1#application-hosting\">abbonamento a qualsiasi piano tariffario<\/a>.<\/p>\n<h4>3. Autorizzare Kinsta su GitHub<\/h4>\n<p>Una volta effettuato l&#8217;accesso, noterete che il cruscotto presenta le opzioni per <a href=\"https:\/\/kinsta.com\/it\/blog\/piattaforma-cloud-per-sviluppatori\/#wp\">creare un sito WordPress<\/a>, <a href=\"https:\/\/kinsta.com\/it\/blog\/piattaforma-cloud-per-sviluppatori\/#app\">creare un&#8217;applicazione<\/a> o <a href=\"https:\/\/kinsta.com\/it\/blog\/piattaforma-cloud-per-sviluppatori\/#db\">creare un database<\/a>. Premiamo sul pulsante <strong>Connect GitHub<\/strong> per <a href=\"https:\/\/docs.sevalla.com\/applications\/git\/github#authenticate-and-authorize\">integrarci con GitHub<\/a>.<\/p>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/Untitled-24.png\" alt=\"Il cruscotto di MyKinsta.\" width=\"1024\" height=\"430\"><figcaption class=\"wp-caption-text\">Il cruscotto di MyKinsta.<\/figcaption><\/figure>\n<p>Successivamente, cliccate sul pulsante <strong>Continua con GitHub<\/strong>. Se non avete ancora effettuato l&#8217;accesso a GitHub, vi verr\u00e0 mostrata l&#8217;opzione per effettuare l&#8217;accesso. A questo punto potete autorizzare l&#8217;applicazione Kinsta GitHub ad accedere al vostro account GitHub selezionando <strong>Autorizza Kinsta<\/strong>.<\/p>\n<p>Infine, GitHub reindirizzer\u00e0 il vostro browser a MyKinsta per continuare a configurare l&#8217;applicazione.<\/p>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/Untitled-25.png\" alt=\"Connettere MyKinsta a GitHub.\" width=\"1024\" height=\"271\"><figcaption class=\"wp-caption-text\">Connettere MyKinsta a GitHub.<\/figcaption><\/figure>\n<p>Dopo esservi collegati a GitHub, vi verr\u00e0 mostrato il popup\/modale <strong>Aggiungi applicazione<\/strong>, che presenta un menu a tendina per selezionare un repository GitHub. Cliccate sul campo del repository GitHub e selezionate <strong>Modifica permessi GitHub<\/strong> nel menu a tendina.<\/p>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/Untitled-26.png\" alt=\"Aggiungere un'applicazione a MyKinsta.\" width=\"1024\" height=\"430\"><figcaption class=\"wp-caption-text\">Aggiungere un&#8217;applicazione a MyKinsta.<\/figcaption><\/figure>\n<p>In questo modo si aprir\u00e0 una nuova scheda del browser con la pagina web di GitHub, dove potrete scegliere a quali dati Kinsta potr\u00e0 accedere. Invece di abilitare l&#8217;accesso a tutti i repository, scegliete solo quello o quelli che volete che Kinsta utilizzi.<\/p>\n<p>Cliccate su <strong>Seleziona solo i repository<\/strong> e scegliete il repository che desiderate distribuire.<\/p>\n<figure style=\"width: 674px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/Untitled-27.png\" alt=\"Autorizzare a Kinsta l'accesso a GitHub.\" width=\"674\" height=\"1024\"><figcaption class=\"wp-caption-text\">Autorizzare a Kinsta l&#8217;accesso a GitHub.<\/figcaption><\/figure>\n<p>Poi cliccate su <strong>Installa<\/strong> e il gioco \u00e8 fatto!<\/p>\n<p>Quando tornerete in MyKinsta e cliccherete sul campo del <strong>repository GitHub<\/strong>, il repository autorizzato dovrebbe essere visibile. Inoltre, potete spuntare la casella <strong>Distribuzione automatica su commit<\/strong> per consentire a MyKinsta di distribuire automaticamente l&#8217;applicazione non appena apportate delle modifiche al repository GitHub.<\/p>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/Untitled-28.png\" alt=\"Selezione di un ramo del repository per MyKinsta.\" width=\"1024\" height=\"287\"><figcaption class=\"wp-caption-text\">Selezione di un ramo del repository per MyKinsta.<\/figcaption><\/figure>\n<h4>4. Aggiungere i dettagli di base dell&#8217;applicazione<\/h4>\n<p>A questo punto potete assegnare all&#8217;applicazione un nome che verr\u00e0 utilizzato solo nel cruscotto e selezionare 25 data center, in modo da collocare l&#8217;applicazione nella posizione geografica pi\u00f9 vicina ai vostri utenti. Se avete bisogno di assistenza per determinare quale sia il <a href=\"https:\/\/kinsta.com\/it\/docs\/informazioni-sul-servizio\/sedi-data-center\/\">data center<\/a> ideale per la vostra applicazione, consultate la nostra guida alla <a href=\"https:\/\/kinsta.com\/it\/docs\/informazioni-sul-servizio\/sedi-data-center\/\">scelta del data center giusto<\/a>.<\/p>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/Untitled-29.png\" alt=\"Aggiungere i dettagli di base di un'applicazione.\" width=\"1024\" height=\"423\"><figcaption class=\"wp-caption-text\">Aggiungere i dettagli di base di un&#8217;applicazione.<\/figcaption><\/figure>\n<h4>5. Aggiungere Variabili d&#8217;Ambiente<\/h4>\n<p>La sezione seguente \u00e8 dedicata all&#8217;aggiunta di <a href=\"https:\/\/kinsta.com\/it\/blog\/cosa-sono-le-variabili-d-ambiente\/\">variabili d&#8217;ambiente<\/a> e la variabile pi\u00f9 importante \u00e8 <code>APP_KEY<\/code>.<\/p>\n<p>Se non avete gi\u00e0 una chiave nel file .env, potete generarne una utilizzando un <a href=\"https:\/\/generate-random.org\/laravel-key-generator\" target=\"_blank\" rel=\"noopener noreferrer\">generatore di chiavi Laravel online<\/a>. Inserite quindi <code>APP_KEY<\/code> nel campo <strong>Chiave 1<\/strong> e inserite la chiave dell&#8217;applicazione generata nel campo <strong>Valore 1<\/strong>.<\/p>\n<p>Infine, selezionate <strong>Disponibile durante il runtime<\/strong> e <strong>Disponibile durante il processo di build<\/strong>.<\/p>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/Untitled-30.png\" alt=\"Aggiunta di variabili d'ambiente in MyKinsta.\" width=\"1024\" height=\"408\"><figcaption class=\"wp-caption-text\">Aggiunta di variabili d&#8217;ambiente in MyKinsta.<\/figcaption><\/figure>\n<h4>6. Configurare l&#8217;Ambiente di Build<\/h4>\n<p>La cosa magica \u00e8 che non c&#8217;\u00e8 bisogno di configurare nulla! Potete procedere cliccando sul pulsante <strong>Continua<\/strong> e voil\u00e0: avete completato la configurazione dell&#8217;ambiente di build. Tuttavia, se volete migliorare le risorse di build per garantire una costruzione pi\u00f9 veloce, potete scegliere la vostra opzione preferita nel campo <strong>Risorse di build<\/strong>.<\/p>\n<p>Il campo <strong>Percorso build<\/strong> \u00e8 facoltativo. Potete lasciarlo vuoto e MyKinsta utilizzer\u00e0 la cartella principale.<\/p>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/Untitled-31.png\" alt=\"Configurazione dell'ambiente di build dell'applicazione.\" width=\"1024\" height=\"742\"><figcaption class=\"wp-caption-text\">Configurazione dell&#8217;ambiente di build dell&#8217;applicazione.<\/figcaption><\/figure>\n<h4>7. Impostazione dei Processi e del Metodo di Pagamento<\/h4>\n<p>Nella sezione Risorse, compilate ogni campo con le seguenti informazioni:<\/p>\n<ul>\n<li><strong>Nome del processo:<\/strong> il nome visualizzato nell&#8217;elenco dei processi dell&#8217;applicazione.<\/li>\n<li><strong>Tipo di processo:<\/strong> Sceglietelo con cura, perch\u00e9 una volta impostato non pu\u00f2 essere modificato. Potete tuttavia aggiungere e modificare altri processi, come un lavoro in background, nella pagina Processi dell&#8217;applicazione dopo la distribuzione.<\/li>\n<li><strong>Comando di avvio:<\/strong> Il comando di avvio del processo (non obbligatorio).<\/li>\n<li><strong>Dimensione del pod:<\/strong> La capacit\u00e0 del pod di cui pensate di aver bisogno per il processo.<\/li>\n<li><strong>Numero di istanze:<\/strong> Il numero di istanze per il vostro processo (massimo 50).<\/li>\n<\/ul>\n<p>Notate che \u00e8 possibile semplicemente cliccare su <strong>Continua<\/strong> senza compilare il campo Comando di <strong>avvio<\/strong>, poich\u00e9 Kinsta rileva automaticamente il comando richiesto durante la prima distribuzione.<\/p>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/Untitled-32.png\" alt=\"Impostazione dei processi dell'applicazione.\" width=\"1024\" height=\"640\"><figcaption class=\"wp-caption-text\">Impostazione dei processi dell&#8217;applicazione.<\/figcaption><\/figure>\n<p>Nell&#8217;ultimo passaggio, controllate i costi di utilizzo mensili calcolati per la vostra applicazione e confermate il metodo di pagamento. Al termine, cliccate sul pulsante <strong>Conferma metodo di pagamento<\/strong>.<\/p>\n<figure style=\"width: 902px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/Untitled-33.png\" alt=\"Confermare i dettagli del pagamento.\" width=\"902\" height=\"744\"><figcaption class=\"wp-caption-text\">Confermare i dettagli del pagamento.<\/figcaption><\/figure>\n<p>E il gioco \u00e8 fatto! Kinsta far\u00e0 tutto il lavoro in background per servire la vostra applicazione.<\/p>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/Untitled-34.png\" alt=\"Caricamento del processo di distribuzione dell'applicazione.\" width=\"1024\" height=\"335\"><figcaption class=\"wp-caption-text\">Caricamento del processo di distribuzione dell&#8217;applicazione.<\/figcaption><\/figure>\n<p>Avrete accesso a tutti i dettagli del processo di distribuzione e all&#8217;URL temporaneo dell&#8217;applicazione, che potrete sostituire in seguito con il vostro dominio.<\/p>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/Untitled-35.png\" alt=\"Distribuzione riuscita dell'applicazione Laravel 10 su MyKinsta.\" width=\"1024\" height=\"746\"><figcaption class=\"wp-caption-text\">Distribuzione riuscita dell&#8217;applicazione Laravel 10 su MyKinsta.<\/figcaption><\/figure>\n<p>La vostra applicazione Laravel 10 \u00e8 ora live su Kinsta, ma cosa succede se dovete apportare una modifica in produzione? E se volessimo cambiare l&#8217;attributo <code>href<\/code> di un tag di ancoraggio?<\/p>\n<p>Poich\u00e9 abbiamo attivato l&#8217;opzione <strong>Distribuzione automatica su commit<\/strong>, MyKinsta rilever\u00e0 tutte le modifiche apportate al ramo distribuito e aggiorner\u00e0 automaticamente l&#8217;applicazione live di conseguenza.<\/p>\n<h4>8. Collegare Laravel 10 al Database MySQL<\/h4>\n<p>Ora che abbiamo distribuito la nostra applicazione Laravel 10, possiamo creare facilmente un database e collegarlo alla nostra applicazione. Tutto quello che dovete fare \u00e8 cliccare su <strong>Applicazioni<\/strong> nel menu di navigazione a sinistra, poi su <strong>Aggiungi servizio<\/strong> e selezionare <strong>Database<\/strong>.<\/p>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/Untitled-36.png\" alt=\"Aggiunta di un nuovo database in MyKinsta.\" width=\"1024\" height=\"640\"><figcaption class=\"wp-caption-text\">Aggiunta di un nuovo database in MyKinsta.<\/figcaption><\/figure>\n<p>Dopo aver compilato tutti i campi, cliccate su <strong>Crea database<\/strong>. In questo modo verr\u00e0 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.<\/p>\n<p>Per farlo, dovete solo cliccare su <strong>Aggiungi applicazione<\/strong> nella sezione <strong>Connessioni interne<\/strong> e selezionare l&#8217;applicazione. Potete selezionare la casella <strong>Aggiungi variabili <strong>d&#8217;ambiente<\/strong> all&#8217;applicazione e MyKinsta inserir\u00e0 tutte le variabili di <code>.env<\/code> di cui l&#8217;applicazione ha bisogno.<\/strong><\/p>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/Untitled-37.png\" alt=\"Collegare un database a un'applicazione Laravel 10.\" width=\"1024\" height=\"640\"><figcaption class=\"wp-caption-text\">Collegare un database a un&#8217;applicazione Laravel 10.<\/figcaption><\/figure>\n<p>A questo punto la vostra applicazione Laravel 10 \u00e8 distribuita e collegata a un database.<\/p>\n<h2>Come Contribuire a Laravel 10<\/h2>\n<p>Sebbene Laravel sia gestito da un team centrale, \u00e8 sviluppato attivamente da oltre <a href=\"https:\/\/github.com\/laravel\/framework\/graphs\/contributors\" target=\"_blank\" rel=\"noopener noreferrer\">3.000 collaboratori volontari<\/a>.<\/p>\n<p>Volete essere uno di questi collaboratori e contribuire a plasmare il futuro di Laravel? Se la vostra risposta \u00e8 affermativa, potreste aiutare gli sviluppatori di tutto il mondo aggiungendo una nuova funzionalit\u00e0, risolvendo un bug o addirittura riscrivendo una parte poco chiara della documentazione.<\/p>\n<p>Per contribuire a Laravel 10, ecco cosa fare:<\/p>\n<ol>\n<li>Andate al <a href=\"https:\/\/github.com\/laravel\/framework\/pulls?page=2&#038;q=is%3Apr+is%3Amerged+10.x\" target=\"_blank\" rel=\"noopener noreferrer\">repository GitHub di Laravel<\/a> 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 \u00e8 possibile migliorarlo.<\/li>\n<li>Se il contributo che intendete apportare non \u00e8 ancora stato affrontato da qualcun altro, potete creare voi stessi una PR.<\/li>\n<li>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\u00e0 di Laravel.<\/li>\n<li>Assicuratevi di rispettare le <a href=\"https:\/\/laravel.com\/docs\/master\/contributions\" target=\"_blank\" rel=\"noopener noreferrer\">linee guida per la contribuzione di Laravel<\/a> per avere maggiori possibilit\u00e0 che le vostre modifiche vengano unite al framework.<\/li>\n<\/ol>\n<p>Un altro motivo per amare Laravel 10 \u00e8 che vi permette di vincere soldi per i vostri contributi con la caccia ai bug! La analizzeremo nel prossimo paragrafo.<\/p>\n<h3>Concorso Laravel 10 per la Caccia ai bug<\/h3>\n<figure style=\"width: 1024px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/02\/Untitled-20.png\" alt=\"Concorso per la caccia ai bug di Laravel 10.\" width=\"1024\" height=\"576\"><figcaption class=\"wp-caption-text\">Concorso per la caccia ai bug di Laravel 10.<\/figcaption><\/figure>\n<p>Laravel 10 ha annunciato un eccellente concorso in cui una delle persone collaboratrici ha la possibilit\u00e0 di vincere 1.000 dollari. Si tratta del primo concorso di questo tipo nella storia di Laravel. \u00c8 stato progettato per incoraggiare la comunit\u00e0 a trovare e correggere i bug nascosti in Laravel 10.<\/p>\n<p>Le regole sono semplici:<\/p>\n<ul>\n<li>Solo le PR inviate al ramo 10.x del repository <code>laravel\/framework<\/code> sono ammissibili.<\/li>\n<li>Sono state prese in considerazione solo le correzioni di bug &#8220;autentici&#8221;. Nuove funzionalit\u00e0, refactoring e correzioni di errori di battitura non sono stati presi in considerazione.<\/li>\n<li>Ogni correzione di bug deve essere supportata da un test.<\/li>\n<li>Le correzioni di bug accettate sono state etichettate su GitHub e un vincitore casuale s far\u00e0 annunciato dopo la conclusione del concorso.<\/li>\n<\/ul>\n<p>Il concorso si \u00e8 concluso con il rilascio della prima versione stabile di Laravel 10 il 14 febbraio 2023.<\/p>\n<h2>Riepilogo<\/h2>\n<p>Finora Laravel 10 sembra essere estremamente promettente e non vediamo l&#8217;ora di scoprire tutte le novit\u00e0 che porter\u00e0 nel mondo PHP.<\/p>\n\n<p>Nel frattempo, se state cercando altri <a href=\"https:\/\/kinsta.com\/it\/blog\/prestazioni-laravel\/\">modi per migliorare le prestazioni della vostra applicazione Laravel<\/a>, potreste prendere in considerazione l&#8217;idea di passare a un provider di hosting premium. Le <a href=\"https:\/\/sevalla.com\/application-hosting\/\">soluzioni di hosting per applicazioni di Kinsta<\/a> sono tra le pi\u00f9 veloci, sicure e facili da usare del settore e sono state progettate appositamente per gli sviluppatori, offrendo un&#8217;ottimizzazione della produzione e un&#8217;assistenza esperta 24 ore su 24 e 7 giorni su 7 da parte dei nostri sviluppatori esperti.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dopo oltre un decennio dall&#8217;introduzione del popolarissimo framework Laravel, vi siete mai chiesti cos&#8217;altro possa offrire Laravel agli sviluppatori PHP? Considerando quanto abbia gi\u00e0 semplificato lo &#8230;<\/p>\n","protected":false},"author":266,"featured_media":65350,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[26020],"class_list":["post-65349","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-laravel"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Cosa c&#039;\u00e8 di Nuovo in Laravel 10: Analisi Approfondita degli Aggiornamenti e delle Funzionalit\u00e0 Pi\u00f9 Recenti<\/title>\n<meta name=\"description\" content=\"In questo articolo vi accompagneremo in un tour attraverso le nuove funzionalit\u00e0, le correzioni, i metodi e i pacchetti appena deprecati di Laravel 10.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/it\/blog\/laravel-10\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Cosa c&#039;\u00e8 di Nuovo in Laravel 10: Analisi Approfondita degli Aggiornamenti e delle Funzionalit\u00e0 Pi\u00f9 Recenti\" \/>\n<meta property=\"og:description\" content=\"In questo articolo vi accompagneremo in un tour attraverso le nuove funzionalit\u00e0, le correzioni, i metodi e i pacchetti appena deprecati di Laravel 10.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/it\/blog\/laravel-10\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstaitalia\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-02-14T15:06:50+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-03-07T22:02:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/02\/laravel-10.png\" \/>\n\t<meta property=\"og:image:width\" content=\"3042\" \/>\n\t<meta property=\"og:image:height\" content=\"1521\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Mostafa Said\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"In questo articolo vi accompagneremo in un tour attraverso le nuove funzionalit\u00e0, le correzioni, i metodi e i pacchetti appena deprecati di Laravel 10.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/02\/laravel-10.png\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_IT\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_IT\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mostafa Said\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"29 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/laravel-10\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/laravel-10\/\"},\"author\":{\"name\":\"Mostafa Said\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/e96baff25a5ee7e63a525f9557f79996\"},\"headline\":\"Cosa c&#8217;\u00e8 di Nuovo in Laravel 10: Analisi Approfondita degli Aggiornamenti e delle Funzionalit\u00e0 Pi\u00f9 Recenti\",\"datePublished\":\"2023-02-14T15:06:50+00:00\",\"dateModified\":\"2023-03-07T22:02:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/laravel-10\/\"},\"wordCount\":5120,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/laravel-10\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/02\/laravel-10.png\",\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/laravel-10\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/laravel-10\/\",\"url\":\"https:\/\/kinsta.com\/it\/blog\/laravel-10\/\",\"name\":\"Cosa c'\u00e8 di Nuovo in Laravel 10: Analisi Approfondita degli Aggiornamenti e delle Funzionalit\u00e0 Pi\u00f9 Recenti\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/laravel-10\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/laravel-10\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/02\/laravel-10.png\",\"datePublished\":\"2023-02-14T15:06:50+00:00\",\"dateModified\":\"2023-03-07T22:02:00+00:00\",\"description\":\"In questo articolo vi accompagneremo in un tour attraverso le nuove funzionalit\u00e0, le correzioni, i metodi e i pacchetti appena deprecati di Laravel 10.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/laravel-10\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/laravel-10\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/laravel-10\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/02\/laravel-10.png\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/02\/laravel-10.png\",\"width\":3042,\"height\":1521},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/laravel-10\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel\",\"item\":\"https:\/\/kinsta.com\/it\/argomenti\/laravel\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Cosa c&#8217;\u00e8 di Nuovo in Laravel 10: Analisi Approfondita degli Aggiornamenti e delle Funzionalit\u00e0 Pi\u00f9 Recenti\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/it\/#website\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluzioni di hosting premium, veloci e sicure\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/it\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/it\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstaitalia\/\",\"https:\/\/x.com\/Kinsta_IT\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/e96baff25a5ee7e63a525f9557f79996\",\"name\":\"Mostafa Said\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/96bb303b019e8ddbdbaea885a36fee51?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/96bb303b019e8ddbdbaea885a36fee51?s=96&d=mm&r=g\",\"caption\":\"Mostafa Said\"},\"description\":\"I\u2019m 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.\",\"url\":\"https:\/\/kinsta.com\/it\/blog\/author\/mostafasaid\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Cosa c'\u00e8 di Nuovo in Laravel 10: Analisi Approfondita degli Aggiornamenti e delle Funzionalit\u00e0 Pi\u00f9 Recenti","description":"In questo articolo vi accompagneremo in un tour attraverso le nuove funzionalit\u00e0, le correzioni, i metodi e i pacchetti appena deprecati di Laravel 10.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/it\/blog\/laravel-10\/","og_locale":"it_IT","og_type":"article","og_title":"Cosa c'\u00e8 di Nuovo in Laravel 10: Analisi Approfondita degli Aggiornamenti e delle Funzionalit\u00e0 Pi\u00f9 Recenti","og_description":"In questo articolo vi accompagneremo in un tour attraverso le nuove funzionalit\u00e0, le correzioni, i metodi e i pacchetti appena deprecati di Laravel 10.","og_url":"https:\/\/kinsta.com\/it\/blog\/laravel-10\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstaitalia\/","article_published_time":"2023-02-14T15:06:50+00:00","article_modified_time":"2023-03-07T22:02:00+00:00","og_image":[{"width":3042,"height":1521,"url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/02\/laravel-10.png","type":"image\/png"}],"author":"Mostafa Said","twitter_card":"summary_large_image","twitter_description":"In questo articolo vi accompagneremo in un tour attraverso le nuove funzionalit\u00e0, le correzioni, i metodi e i pacchetti appena deprecati di Laravel 10.","twitter_image":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/02\/laravel-10.png","twitter_creator":"@Kinsta_IT","twitter_site":"@Kinsta_IT","twitter_misc":{"Scritto da":"Mostafa Said","Tempo di lettura stimato":"29 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/it\/blog\/laravel-10\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/blog\/laravel-10\/"},"author":{"name":"Mostafa Said","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/e96baff25a5ee7e63a525f9557f79996"},"headline":"Cosa c&#8217;\u00e8 di Nuovo in Laravel 10: Analisi Approfondita degli Aggiornamenti e delle Funzionalit\u00e0 Pi\u00f9 Recenti","datePublished":"2023-02-14T15:06:50+00:00","dateModified":"2023-03-07T22:02:00+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/laravel-10\/"},"wordCount":5120,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/laravel-10\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/02\/laravel-10.png","inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/it\/blog\/laravel-10\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/it\/blog\/laravel-10\/","url":"https:\/\/kinsta.com\/it\/blog\/laravel-10\/","name":"Cosa c'\u00e8 di Nuovo in Laravel 10: Analisi Approfondita degli Aggiornamenti e delle Funzionalit\u00e0 Pi\u00f9 Recenti","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/laravel-10\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/laravel-10\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/02\/laravel-10.png","datePublished":"2023-02-14T15:06:50+00:00","dateModified":"2023-03-07T22:02:00+00:00","description":"In questo articolo vi accompagneremo in un tour attraverso le nuove funzionalit\u00e0, le correzioni, i metodi e i pacchetti appena deprecati di Laravel 10.","breadcrumb":{"@id":"https:\/\/kinsta.com\/it\/blog\/laravel-10\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/it\/blog\/laravel-10\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/blog\/laravel-10\/#primaryimage","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/02\/laravel-10.png","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/02\/laravel-10.png","width":3042,"height":1521},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/it\/blog\/laravel-10\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/it\/"},{"@type":"ListItem","position":2,"name":"Laravel","item":"https:\/\/kinsta.com\/it\/argomenti\/laravel\/"},{"@type":"ListItem","position":3,"name":"Cosa c&#8217;\u00e8 di Nuovo in Laravel 10: Analisi Approfondita degli Aggiornamenti e delle Funzionalit\u00e0 Pi\u00f9 Recenti"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/it\/#website","url":"https:\/\/kinsta.com\/it\/","name":"Kinsta\u00ae","description":"Soluzioni di hosting premium, veloci e sicure","publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/it\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/it\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstaitalia\/","https:\/\/x.com\/Kinsta_IT","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/e96baff25a5ee7e63a525f9557f79996","name":"Mostafa Said","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/96bb303b019e8ddbdbaea885a36fee51?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/96bb303b019e8ddbdbaea885a36fee51?s=96&d=mm&r=g","caption":"Mostafa Said"},"description":"I\u2019m 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.","url":"https:\/\/kinsta.com\/it\/blog\/author\/mostafasaid\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/65349","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/users\/266"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/comments?post=65349"}],"version-history":[{"count":12,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/65349\/revisions"}],"predecessor-version":[{"id":66468,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/65349\/revisions\/66468"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/65349\/translations\/en"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/65349\/translations\/fr"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/65349\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/65349\/translations\/pt"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/65349\/translations\/de"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/65349\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/65349\/translations\/es"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/65349\/translations\/se"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/65349\/translations\/dk"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/65349\/translations\/jp"},{"href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/65349\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media\/65350"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media?parent=65349"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/tags?post=65349"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/topic?post=65349"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}