{"id":25564,"date":"2019-06-17T02:34:15","date_gmt":"2019-06-17T09:34:15","guid":{"rendered":"https:\/\/kinsta.com\/?p=46699"},"modified":"2023-02-01T15:10:15","modified_gmt":"2023-02-01T14:10:15","slug":"php-7-4","status":"publish","type":"post","link":"https:\/\/kinsta.com\/it\/blog\/php-7-4\/","title":{"rendered":"Cosa c&#8217;\u00e8 di Nuovo in PHP 7.4 (Funzionalit\u00e0, Deprecazioni, Velocit\u00e0)"},"content":{"rendered":"<p>PHP 7.4, la pi\u00f9 recente minor release di PHP 7, \u00e8 stato rilasciato alla General Availability il 28 novembre 2019. Quindi \u00e8 il momento per noi di analizzare alcune delle novit\u00e0 e delle funzionalit\u00e0 pi\u00f9 interessanti che rendono PHP pi\u00f9 veloce e affidabile.<\/p>\n<p><strong>Aggiornamento:<\/strong> <a href=\"https:\/\/kinsta.com\/it\/changelog\/php-8-1\/\">PHP 8.1 (versione ufficiale)<\/a> \u00e8 ora disponibile per tutti i clienti Kinsta. Kinsta non supporta pi\u00f9 PHP 7.4. Supportiamo invece le versioni di PHP 7.4, 8.0, 8.1, 8.2, 8.3, 8.4 e 8.5.<\/p>\n<p>Anche se PHP 7.4 migliora significativamente le prestazioni e la leggibilit\u00e0 del codice, <a href=\"https:\/\/kinsta.com\/it\/blog\/php-8\/\">PHP 8<\/a> sar\u00e0 la vera pietra miliare per le prestazioni di PHP, poich\u00e9 la proposta di <a href=\"https:\/\/wiki.php.net\/rfc\/jit\">inclusione di JIT<\/a> \u00e8 gi\u00e0 stata approvata.<\/p>\n<p>Ad ogni modo, oggi analizzeremo insieme alcune delle funzionalit\u00e0 e delle modifiche pi\u00f9 interessanti che ci attendiamo da PHP 7.4. Giusto per registrazione, queste sono state le date importanti che hanno portato al rilascio di PHP 7.4::<\/p>\n<ul>\n<li>6 giugno: PHP 7.4 Alpha 1<\/li>\n<li>18 luglio: PHP 7.4 Beta 1 &#8211; Congelamento delle funzionalit\u00e0<\/li>\n<li>28 novembre: rilascio di PHP 7.4 per la GA<\/li>\n<\/ul>\n<p>Potete trovare l&#8217;elenco completo delle funzionalit\u00e0 e delle novit\u00e0 nella <a href=\"https:\/\/wiki.php.net\/rfc#php_74\">pagina ufficiale della RFC<\/a>.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2 id=\"whats-new-in-php-with-php-74\">Cosa c&#8217;\u00e8 di nuovo in PHP con PHP 7.4?<\/h2>\n<p>In questo post analizziamo diverse novit\u00e0 e funzionalit\u00e0 aggiunte al linguaggio con il rilascio definitivo di PHP 7.4:<\/p>\n<div><\/div><kinsta-auto-toc list-style=\"disc\" selector=\"h3\" count-number=\"9\" sub-toc=\"true\"><\/kinsta-auto-toc>\n<h3 id=\"array-spread-operator\">Dimenticatevi di array_merge: PHP 7.4 Porta lo Spread Operator nell&#8217;Espressione degli Array<\/h3>\n<p>Disponibile a partire da PHP 5.6, lo <a href=\"https:\/\/wiki.php.net\/rfc\/argument_unpacking\">spacchettamento degli argomenti<\/a> \u00e8 una sintassi che permette di decomprimere array e <a href=\"https:\/\/www.php.net\/manual\/en\/class.traversable.php\">Traversables<\/a> in elenchi di argomenti. Per decomprimere un array o un Traversable, \u00e8 necessario anteporvi &#8230; (3 punti), come mostrato nell&#8217;esempio che segue:<\/p>\n<pre><code class=\"language-php\">function test(...$args) { var_dump($args); }\ntest(1, 2, 3);<\/code><\/pre>\n<p>Ora, <a href=\"https:\/\/wiki.php.net\/rfc\/spread_operator_for_array\">questa RFC di PHP 7.4<\/a> propone di estendere questa funzionalit\u00e0 alle definizioni degli array:<\/p>\n<pre><code class=\"language-php\">$arr = [...$args];<\/code><\/pre>\n<p>Il primo vantaggio dichiarato dello <strong>Spread Operator nell&#8217;espressione dell&#8217;array<\/strong> riguarda le prestazioni. Infatti, <a href=\"https:\/\/wiki.php.net\/rfc\/spread_operator_for_array\">il documento dell&#8217;RFC afferma<\/a>:<\/p>\n<blockquote><p>Lo Spread Operator dovrebbe avere prestazioni migliori rispetto a <code>array_merge<\/code>. Questo non solo perch\u00e9 lo Spread Operator \u00e8 una struttura del linguaggio mentre <code>array_merge<\/code> \u00e8 una chiamata di funzione, ma anche perch\u00e9 l&#8217;ottimizzazione del tempo di compilazione pu\u00f2 essere performante per gli array di costanti.<\/p><\/blockquote>\n<p>Un vantaggio significativo dello Spread Operator \u00e8 che supporta qualsiasi oggetto traversable, mentre la funzione <code>array_merge<\/code> supporta solo gli array.<\/p>\n<p>Ecco un esempio di spacchettamento degli argomenti nell&#8217;espressione di array:<\/p>\n<pre><code class=\"language-php\">$parts = ['apple', 'pear'];\n$fruits = ['banana', 'orange', ...$parts, 'watermelon'];\nvar_dump($fruits);<\/code><\/pre>\n<p>Se si dovesse eseguire questo codice con PHP 7.3 o versioni precedenti, PHP genererebbe un Parse error:<\/p>\n<pre><code class=\"language-php\">Parse error: syntax error, unexpected '...' (T_ELLIPSIS), expecting ']' in \/app\/spread-operator.php on line 3<\/code><\/pre>\n<p>Invece PHP 7.4 restituisce un array:<\/p>\n<pre><code class=\"language-php\">array(5) {\n\t[0]=&gt;\n\tstring(6) \"banana\"\n\t[1]=&gt;\n\tstring(6) \"orange\"\n\t[2]=&gt;\n\tstring(5) \"apple\"\n\t[3]=&gt;\n\tstring(4) \"pear\"\n\t[4]=&gt;\n\tstring(10) \"watermelon\"\n}<\/code><\/pre>\n<p>L&#8217;RFC afferma che possiamo espandere lo stesso array pi\u00f9 volte. Inoltre, possiamo utilizzare la sintassi dello Spread Operator ovunque nell&#8217;array, dato che \u00e8 possibile aggiungere elementi normali prima o dopo lo Spread Operator. Per questo, il codice che segue funzioner\u00e0 nel modo in cui potremmo aspettarci:<\/p>\n<pre><code class=\"language-php\">$arr1 = [1, 2, 3];\n$arr2 = [4, 5, 6];\n$arr3 = [...$arr1, ...$arr2];\n$arr4 = [...$arr1, ...$arr3, 7, 8, 9];<\/code><\/pre>\n<p>\u00c8 anche possibile decomprimere gli array restituiti da una funzione direttamente in un nuovo array:<\/p>\n<pre><code class=\"language-php\">function buildArray(){\n\treturn ['red', 'green', 'blue'];\n}\n$arr1 = [...buildArray(), 'pink', 'violet', 'yellow'];<\/code><\/pre>\n<p>PHP 7.4 produce il seguente array:<\/p>\n<pre><code class=\"language-php\">array(6) {\n\t[0]=&gt;\n\tstring(3) \"red\"\n\t[1]=&gt;\n\tstring(5) \"green\"\n\t[2]=&gt;\n\tstring(4) \"blue\"\n\t[3]=&gt;\n\tstring(4) \"pink\"\n\t[4]=&gt;\n\tstring(6) \"violet\"\n\t[5]=&gt;\n\tstring(6) \"yellow\"\n}<\/code><\/pre>\n<p>Possiamo anche utilizzare la <a href=\"https:\/\/www.php.net\/manual\/en\/language.generators.syntax.php\">generator syntax<\/a>:<\/p>\n<pre><code class=\"language-php\">function generator() {\n\tfor ($i = 3; $i &lt;= 5; $i++) {\n\t\tyield $i;\n\t}\n}\n$arr1 = [0, 1, 2, ...generator()];<\/code><\/pre>\n<p>Tuttavia non possiamo decomprimere gli array passati per riferimento (<em>by reference<\/em>). Considerate il seguente esempio:<\/p>\n<pre><code class=\"language-php\">$arr1 = ['red', 'green', 'blue'];\n$arr2 = [...&$arr1];<\/code><\/pre>\n<p>Se provassimo a decomprimere un array per riferimento, PHP genererebbe il seguente Parse error:<\/p>\n<pre><code class=\"language-php\">Parse error: syntax error, unexpected '&' in \/app\/spread-operator.php on line 3<\/code><\/pre>\n<p>Ad ogni modo, se gli elementi del primo array sono memorizzati per riferimento, saranno memorizzati per riferimento anche nel secondo array. Ecco un esempio:<\/p>\n<pre><code class=\"language-php\">$arr0 = 'red';\n$arr1 = [&$arr0, 'green', 'blue'];\n$arr2 = ['white', ...$arr1, 'black'];<\/code><\/pre>\n<p>Ed ecco cosa otteniamo con PHP 7.4:<\/p>\n<pre><code>array(5) {\n\t[0]=&gt;\n\tstring(5) \"white\"\n\t[1]=&gt;\n\t<strong>&string(3) \"red\"<\/strong>\n\t[2]=&gt;\n\tstring(5) \"green\"\n\t[3]=&gt;\n\tstring(4) \"blue\"\n\t[4]=&gt;\n\tstring(5) \"black\"\n}<\/code><\/pre>\n<p>La proposta dello Spread Operator \u00e8 stata approvata con 43 voti favorevoli contro 1.<\/p>\n<h3 id=\"arrow-functions\">Arrow Functions 2.0 (Short Closures)<\/h3>\n<p>In PHP, le <a href=\"https:\/\/www.php.net\/manual\/en\/functions.anonymous.php\">funzioni anonime<\/a> sono considerate piuttosto prolisse e difficili da implementare e mantenere. <a href=\"https:\/\/wiki.php.net\/rfc\/arrow_functions_v2\">Questa RFC<\/a> propone l&#8217;introduzione di una sintassi pi\u00f9 sintetica e pi\u00f9 chiara per le <strong>arrow functions<\/strong> (o <em>short closures<\/em>), che dovrebbe permetterci di ripulire in modo significativo il nostro codice PHP.<\/p>\n<p>Considerate il seguente esempio:<\/p>\n<pre><code class=\"language-php\">function cube($n){\n\treturn ($n * $n * $n);\n}\n$a = [1, 2, 3, 4, 5];\n$b = array_map('cube', $a);\nprint_r($b);<\/code><\/pre>\n<p>PHP 7.4 permette di utilizzare una sintassi pi\u00f9 concisa, e la funzione qui sopra potrebbe essere riscritta come segue:<\/p>\n<pre><code class=\"language-php\">$a = [1, 2, 3, 4, 5];\n$b = array_map(fn($n) =&gt; $n * $n * $n, $a);\nprint_r($b);<\/code><\/pre>\n<p>Attualmente, le <a href=\"https:\/\/www.php.net\/manual\/en\/functions.anonymous.php\">funzioni anonime<\/a> (<em>closure<\/em>) possono ereditare variabili definite nello scopo superiore (<em>parent scope<\/em>) grazie al costrutto di linguaggio <code>use<\/code>, come mostrato di seguito:<\/p>\n<pre><code class=\"language-php\">$factor = 10;\n$calc = function($num) use($factor){\n\treturn $num * $factor;\n};<\/code><\/pre>\n<p>Ma con PHP 7.4, le variabili definite nel parent scope sono <strong>catturate implicitamente per valore<\/strong> (<em>implicit by-value scope binding<\/em>). Possiamo, quindi, scrivere l&#8217;intera funzione vista sopra su una singola riga:<\/p>\n<pre><code class=\"language-php\">$factor = 10;\n$calc = fn($num) =&gt; $num * $factor;<\/code><\/pre>\n<p>La variabile definita nel <em>parent scope<\/em> pu\u00f2 essere utilizzata nella arrow function esattamente come se stessimo utilizzando <code class=\"language-php\">use($var)<\/code>, e non \u00e8 possibile modificare una variabile dal parent scope.<\/p>\n<p>La nuova sintassi rappresenta un notevole miglioramento del linguaggio in quanto ci consente di creare codice pi\u00f9 leggibile e gestibile. Possiamo anche utilizzare <a href=\"https:\/\/kinsta.com\/it\/blog\/php-7-2\/\">parametri e tipi di ritorno<\/a>, valori predefiniti, liste di argomenti a lunghezza variabile (<a href=\"https:\/\/it.wikipedia.org\/wiki\/Funzione_variadica\">funzioni variadiche<\/a>), possiamo passare e restituire per riferimento, ecc. Infine, le <em>short closure<\/em> possono essere utilizzate anche in metodi di classe e possono fare uso della variabile <code>$this<\/code> esattamente come le normali closure.<\/p>\n<p>Questa RFC \u00e8 stata approvata con 51 voti favorevoli contro 8.<\/p>\n<h3 id=\"nulled-coalesce-assign-operator\">Operatore di Assegnazione di Coalescenza Nulled<\/h3>\n<p>Aggiunto con PHP 7, l&#8217;<a href=\"https:\/\/www.php.net\/manual\/en\/migration70.new-features.php#migration70.new-features.null-coalesce-op\">operatore di coalescenza<\/a> (<code>??<\/code>) \u00e8 utile quando abbiamo bisogno di un operatore ternario insieme a <code>isset()<\/code>. Questo restituisce il primo operando, se questo esiste e non \u00e8 <code>NULL<\/code>. In caso contrario, restituisce il secondo operando. Ecco un esempio:<\/p>\n<pre><code class=\"language-php\">$username = $_GET['user'] ?? 'nobody';<\/code><\/pre>\n<p>Questo codice fa una cosa piuttosto semplice: <strong>recupera il parametro della richiesta e imposta un valore predefinito nel caso in cui questo non esista<\/strong>. Il significato di questa riga di codice \u00e8 chiaro, ma cosa accadrebbe se avessimo nomi di variabili molto pi\u00f9 lunghi, come in questo esempio della RFC?<\/p>\n<pre><code class=\"language-php\">$this-&gt;request-&gt;data['comments']['user_id'] = $this-&gt;request-&gt;data['comments']['user_id'] ?? 'value';<\/code><\/pre>\n<p>Nel lungo termine, questo codice potrebbe essere un po&#8217; difficile da mantenere. Quindi, con l&#8217;obiettivo di aiutare gli sviluppatori a scrivere codice pi\u00f9 intuitivo, <a href=\"https:\/\/wiki.php.net\/rfc\/null_coalesce_equal_operator\">questa RFC<\/a> propone l&#8217;introduzione dell&#8217;<strong>operatore di assegnazione null coalesce<\/strong> (<code>??=<\/code>). Quindi, invece di scrivere il codice precedente, potremmo scrivere quanto segue:<\/p>\n<pre><code class=\"language-php\">$this-&gt;request-&gt;data['comments']['user_id'] ??= 'value';<\/code><\/pre>\n<p>Se il valore del parametro di sinistra \u00e8 <code>null<\/code>, viene utilizzato il valore del parametro di destra.<br \/>\nSi noti che, mentre l&#8217;operatore di coalescenza \u00e8 un operatore di confronto, <code>??=<\/code> \u00e8 un operatore di assegnazione.<\/p>\n<p>Questa proposta \u00e8 stata approvata con 37 voti favorevoli e 4 contrari.<\/p>\n<h3 id=\"typed-properties\">Typed Properties 2.0<\/h3>\n<p>Le dichiarazioni del tipo dell&#8217;argomento, o type hint, consentono di specificare il tipo di una variabile che si prevede venga passata a una funzione o a un metodo di classe. I <em>type hint<\/em> sono disponibili sin da PHP 5 e, a partire da <a href=\"https:\/\/kinsta.com\/it\/blog\/php-7-2\/\">PHP 7.2<\/a>, li possiamo utilizzare con il tipo di dati <code>object<\/code>. Ora PHP 7.4 spinge il <em>type hinting<\/em> un passo avanti, aggiungendo il supporto per le <a href=\"https:\/\/wiki.php.net\/rfc\/typed_properties_v2\">dichiarazioni del tipo di propriet\u00e0 di prima classe<\/a>. Ecco un esempio molto semplice:<\/p>\n<pre><code class=\"language-php\">class User {\n\tpublic int $id;\n\tpublic string $name;\n}<\/code><\/pre>\n<p>Sono supportati tutti i tipi, ad eccezione di <code>void<\/code> e <code>callable<\/code>:<\/p>\n<pre><code class=\"language-php\">public int $scalarType;\nprotected ClassName $classType;\nprivate ?ClassName $nullableClassType;<\/code><\/pre>\n<p>La RFC spiega il motivo per cui <code>void<\/code> e <code>callable<\/code> non sono supportati:<\/p>\n<blockquote><p>Il tipo void non \u00e8 supportato perch\u00e9 non \u00e8 utile e ha una semantica poco chiara.<\/p><\/blockquote>\n<blockquote><p>Il tipo callable non \u00e8 supportato perch\u00e9 il suo comportamento dipende dal contesto.<\/p><\/blockquote>\n<p>Quindi possiamo tranquillamente usare <code>bool<\/code>, <code>int<\/code>, <code>float<\/code>, <code>string<\/code>, <code>array<\/code>, <code>object<\/code>, <code>iterable<\/code>, <code>self<\/code>, <code>parent<\/code>, qualsiasi nome di classe o di interfaccia e i <a href=\"https:\/\/kinsta.com\/blog\/php-7-1-0\/#nullable-types\">nullable<\/a> <a href=\"https:\/\/php.net\/manual\/en\/migration71.new-features.php\">types<\/a> (<code>?type<\/code>).<\/p>\n<p>I tipi possono essere utilizzati su propriet\u00e0 statiche:<\/p>\n<pre><code class=\"language-php\">public static iterable $staticProp;<\/code><\/pre>\n<p>Sono inoltre ammessi con la notazione <code>var<\/code>:<\/p>\n<pre><code class=\"language-php\">var bool $flag;<\/code><\/pre>\n<p>\u00c8 possibile impostare valori di propriet\u00e0 predefiniti, che ovviamente devono corrispondere al tipo di propriet\u00e0 dichiarato, ma solo le propriet\u00e0 nullable possono avere <code>null<\/code> come valore predefinito:<\/p>\n<pre><code class=\"language-php\">public string $str = \"foo\";\npublic ?string $nullableStr = null;<\/code><\/pre>\n<p>Lo stesso tipo si applica a tutte le propriet\u00e0 di una singola dichiarazione:<\/p>\n<pre><code class=\"language-php\">public float $x, $y;<\/code><\/pre>\n<p>Cosa succede se commettiamo un errore sul tipo di propriet\u00e0? Consideriamo il seguente codice:<\/p>\n<pre><code class=\"language-php\">class User {\n\tpublic int $id;\n\tpublic string $name;\n}\n\n$user = new User;\n$user-&gt;id = 10;\n$user-&gt;name = [];<\/code><\/pre>\n<p>Nel codice qui sopra, abbiamo dichiarato un tipo di propriet\u00e0 string, ma abbiamo impostato un array come valore della propriet\u00e0. In tale situazione, otteniamo il seguente Fatal error:<\/p>\n<pre><code class=\"language-php\">Fatal error: Uncaught TypeError: Typed property User::$name must be string, array used in \/app\/types.php:9<\/code><\/pre>\n<p>Questa RFC \u00e8 stata approvata con 70 voti contro 1.<\/p>\n\n<h3 id=\"weakreferences\">Weak References<\/h3>\n<p>Con <a href=\"https:\/\/wiki.php.net\/rfc\/weakrefs\">questa RFC<\/a>, PHP 7.4 introduce la classe <a href=\"https:\/\/www.php.net\/manual\/en\/class.weakreference.php\">WeakReference<\/a>, che consente ai programmatori di mantenere un riferimento a un oggetto che non impedisce che l&#8217;oggetto stesso venga distrutto.<\/p>\n<p>Attualmente PHP supporta le Weak References con il ricorso ad un&#8217;estensione come pecl-weakref. Ad ogni modo, la nuova API \u00e8 diversa dalla classe <code>WeakRef<\/code> documentata.<\/p>\n<p>Ecco un <a href=\"https:\/\/www.slideshare.net\/nikita_ppv\/typed-properties-and-more-whats-coming-in-php-74\">esempio dell&#8217;autore di questa proposta<\/a>, Nikita Popov:<\/p>\n<pre><code class=\"language-php\">$object = new stdClass;\n$weakRef = WeakReference::create($object);\n\nvar_dump($weakRef-&gt;get());\nunset($object);\nvar_dump($weakRef-&gt;get());<\/code><\/pre>\n<p>Il primo <code>var_dump<\/code> stampa <code class=\"language-php\">object(stdClass)#1 (0) {}<\/code>, mentre il secondo <code>var_dump<\/code> stampa <code>NULL<\/code>, dato che l&#8217;oggetto di riferimento \u00e8 stato distrutto.<\/p>\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">Slides for my PHP 7.4 talk at <a href=\"https:\/\/twitter.com\/hashtag\/PHPRussia2019?src=hash&amp;ref_src=twsrc%5Etfw\">#PHPRussia2019<\/a>. Was a great conference!<a href=\"https:\/\/t.co\/zLr9Bj2aKl\">https:\/\/t.co\/zLr9Bj2aKl<\/a><\/p>\n<p>&mdash; Nikita Popov (@nikita_ppv) <a href=\"https:\/\/twitter.com\/nikita_ppv\/status\/1130188147940352000?ref_src=twsrc%5Etfw\">May 19, 2019<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<p>Questa RFC \u00e8 stata approvata con 28 voti a 5.<\/p>\n<h3 id=\"covariant-return-types-contravariant-parameters\">Tipi di Ritorno Covarianti e Parametri Controvarianti<\/h3>\n<p>La <a href=\"https:\/\/it.wikipedia.org\/wiki\/Covarianza_e_controvarianza_(informatica)\">varianza<\/a> \u00e8 una propriet\u00e0 delle gerarchie di classe che descrive il modo in cui i tipi di un costruttore di tipi influenzano i <a href=\"https:\/\/en.wikipedia.org\/wiki\/Subtyping\">sottotipi<\/a>. In generale, un costruttore di tipi pu\u00f2 essere:<\/p>\n<ul>\n<li><strong>Invariante<\/strong>: se il tipo del super-tipo vincola il tipo del sottotipo.<\/li>\n<li><strong>Covariante<\/strong>: se l&#8217;ordine dei tipi viene mantenuto (i tipi vengono ordinati dai pi\u00f9 specifici ai pi\u00f9 generici).<\/li>\n<li><strong>Controvariante<\/strong>: se l&#8217;ordine dei tipi viene invertito (i tipi vengono ordinati dai pi\u00f9 generici ai pi\u00f9 specifici).<\/li>\n<\/ul>\n<p>Attualmente, PHP ha per lo pi\u00f9 parametri e tipi di ritorno invarianti, con poche eccezioni. Questa RFC propone di consentire covarianza e controvarianza su tipi di parametri e tipi di ritorno, e fornisce anche diversi esempi di codice.<\/p>\n<p>Ecco un esempio di <strong>tipo di ritorno covariante<\/strong>:<\/p>\n<pre><code class=\"language-php\">interface Factory {\n\tfunction make(): object;\n}\n\nclass UserFactory implements Factory {\n\tfunction make(): User;\n}<\/code><\/pre>\n<p>Ed ecco un esempio di <strong>tipo di parametro controvariante<\/strong>:<\/p>\n<pre><code class=\"language-php\">interface Concatable {\n\tfunction concat(Iterator $input); \n}\n \nclass Collection implements Concatable {\n\t\/\/ accepts all iterables, not just Iterator\n\tfunction concat(iterable $input) {\/* . . . *\/}\n}<\/code><\/pre>\n<p>Si veda <a href=\"https:\/\/wiki.php.net\/rfc\/covariant-returns-and-contravariant-parameters\">la RFC<\/a> per uno sguardo pi\u00f9 da vicino alla covarianza e alla controvarianza in PHP 7.4.<\/p>\n<p>Questa RFC \u00e8 passato con 39 voti a 1.<\/p>\n<h3 id=\"preloading\">Preloading<\/h3>\n<p><a href=\"https:\/\/wiki.php.net\/rfc\/preload\">Questa proposta<\/a> di Dmitry Stogov \u00e8 una delle nostre preferite perch\u00e9 dovrebbe portare un significativo miglioramento delle prestazioni. Il <strong>Preloading<\/strong> \u00e8 il processo di caricamento di librerie e framework nell&#8217;<a href=\"https:\/\/www.php.net\/manual\/en\/book.opcache.php\">OPCache<\/a> nella fase di inizializzazione del modulo (maggiori informazioni sul <a href=\"http:\/\/www.phpinternalsbook.com\/php7\/extensions_design\/php_lifecycle.html\">ciclo di vita di PHP<\/a>).<\/p>\n<figure style=\"width: 335px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2019\/05\/ciclo-di-vita-php.png\" alt=\"Il ciclo di vita di PHP\" width=\"335\" height=\"323\"><figcaption class=\"wp-caption-text\">Il ciclo di vita di PHP (origine immagine: <a href=\"https:\/\/phpinternals.net\/categories\/extensions\">PHP Internals<\/a>)<\/figcaption><\/figure>\n<p>Ecco come funziona il Preloading nelle parole di Dmitry:<\/p>\n<blockquote><p>All&#8217;avvio del server &#8211; prima che venga eseguito qualsiasi codice dell&#8217;applicazione &#8211; possiamo caricare in memoria un certo set di file PHP e rendere i loro contenuti &#8220;permanentemente disponibili&#8221; a tutte le richieste successive che saranno servite da quel server. Tutte le funzioni e le classi definite in questi file saranno disponibili per le richieste nativamente, esattamente come le entit\u00e0 interne.<\/p><\/blockquote>\n<p>Questi file vengono caricati all&#8217;avvio del server, vengono eseguiti prima di qualsiasi applicazione e rimangono disponibili per eventuali richieste future. \u00c8 fantastico in termini di prestazioni.<\/p>\n<p>Il Preloading \u00e8 controllato da una specifica direttiva <code>php.ini<\/code>: <code>opcache.preload<\/code>. Questa direttiva specifica uno script PHP da compilare ed eseguire all&#8217;avvio del server. Questo file pu\u00f2 essere utilizzato per precaricare file aggiuntivi, includendoli oppure tramite la funzione <code>opcache_compile_file()<\/code> (si legga di pi\u00f9 al riguardo nella <a href=\"https:\/\/www.php.net\/manual\/en\/function.opcache-compile-file.php\">documentazione di PHP<\/a>).<\/p>\n<p>Ma c&#8217;\u00e8 un rovescio della medaglia. Infatti la RFC afferma esplicitamente:<\/p>\n<blockquote><p>i file precaricati rimangono memorizzati nella memoria opcache per sempre. La modifica dei corrispondenti file sorgente non avr\u00e0 alcun effetto senza un altro riavvio del server.<\/p><\/blockquote>\n<p>Tuttavia, tutte le funzioni definite nei file precaricati verranno caricate permanentemente nelle tabelle delle funzioni e delle classi PHP e resteranno disponibili per ogni richiesta futura. Ci\u00f2 porter\u00e0 a buoni miglioramenti delle prestazioni, anche se questi miglioramenti potrebbero essere considerevolmente variabili.<\/p>\n<p>Potete leggere di pi\u00f9 sulle limitazioni e le eccezioni del Preloading nella <a href=\"https:\/\/wiki.php.net\/rfc\/preload\">pagina ufficiale della RFC<\/a>.<\/p>\n<h3 id=\"serialization\">Nuovo Meccanismo di Serializzazione Personalizzata degli Oggetti<\/h3>\n<p>Questa \u00e8 un&#8217;<a href=\"https:\/\/nikic.github.io\/aboutMe.html\">altra proposta<\/a> di Nikita Popov approvata con un&#8217;ampia maggioranza di voti.<\/p>\n<p>Al momento, abbiamo due diversi meccanismi per la serializzazione personalizzata degli oggetti in PHP:<\/p>\n<ul>\n<li>I magic methods <code>__sleep()<\/code> e <code>__wakeup()<\/code><\/li>\n<li>L&#8217;interfaccia <code>Serializable<\/code><\/li>\n<\/ul>\n<p>Secondo Nikita, entrambe queste soluzioni presentano problemi che portano ad un codice complesso e inaffidabile. Potete approfondire questo argomento nella <a href=\"https:\/\/wiki.php.net\/rfc\/custom_object_serialization\">RFC<\/a>. Qui mi limito a dire che il nuovo meccanismo di serializzazione dovrebbe prevenire questi problemi fornendo due nuovi magic methods, <code>__serialize()<\/code> e <code>__unserialize()<\/code>, che combinano i due meccanismi esistenti.<\/p>\n<p>Questa proposta \u00e8 stata approvata con 20 voti favorevoli e 7 contrari.<\/p>\n<h3 id=\"deprecations\">Deprecazioni<\/h3>\n<p>Le seguenti funzioni\/funzionalit\u00e0 saranno deprecate con PHP 7.4. Per un elenco pi\u00f9 completo delle deprecazioni, consultate le <a href=\"https:\/\/github.com\/php\/php-src\/blob\/PHP-7.4\/UPGRADING\">PHP 7.4 Upgrade Notes<\/a>.<\/p>\n<h4>Cambia la Precedenza dell&#8217;Operatore di Concatenazione<\/h4>\n<p>Attualmente, in PHP gli operatori aritmetici &#8220;+&#8221; e &#8220;-&#8221; e l&#8217;operatore di stringa &#8220;.&#8221; sono &#8220;left associative&#8221; e hanno la stessa precedenza (maggiori informazioni in <a href=\"https:\/\/www.php.net\/manual\/en\/language.operators.precedence.php\">Operator Precedence<\/a>).<\/p>\n<p>Ad esempio, considerate la seguente riga:<\/p>\n<pre><code class=\"language-php\">echo \"sum: \" . $a + $b;<\/code><\/pre>\n<p>In PHP 7.3 questo codice produce il seguente avviso:<\/p>\n<pre><code class=\"language-php\">Warning: A non-numeric value encountered in \/app\/types.php on line 4<\/code><\/pre>\n<p>Questo perch\u00e9 la concatenazione viene valutata da sinistra a destra. \u00c8 come scrivere il seguente codice:<\/p>\n<pre><code class=\"language-php\">echo (\"sum: \" . $a) + $b;<\/code><\/pre>\n<p><a href=\"https:\/\/wiki.php.net\/rfc\/concatenation_precedence\">Questa RFC<\/a> propone di cambiare la precedenza degli operatori, dando al &#8220;.&#8221; una precedenza inferiore rispetto agli operatori &#8220;+&#8221; e &#8220;-&#8220;, cos\u00ec che le somme e le sottrazioni vengano sempre eseguite prima della concatenazione delle stringhe. Quella riga di codice sarebbe equivalente alla seguente:<\/p>\n<pre><code class=\"language-php\">echo \"sum: \" . ($a + $b);<\/code><\/pre>\n<p>Si tratta di una proposta in due fasi:<\/p>\n<ul>\n<li>A partire dalla versione 7.4, PHP dovrebbe emettere un avviso di deprecazione quando incontra un&#8217;espressione senza parentesi con &#8220;+&#8221;, &#8220;-&#8221; e &#8220;.&#8221;.<\/li>\n<li>La modifica effettiva della precedenza di questi operatori dovrebbe arrivare con <a href=\"https:\/\/kinsta.com\/it\/blog\/php-8\/\">PHP 8<\/a>.<\/li>\n<\/ul>\n<p>Entrambe le proposte sono state approvate con un&#8217;ampia maggioranza di voti.<\/p>\n<h4>Deprecato l&#8217;Operatore Ternario con Associazione a Sinistra<\/h4>\n<p>In PHP l&#8217;operatore ternario, a differenza di molti altri linguaggi, \u00e8 associato a sinistra. Secondo Nikita Popof, questo pu\u00f2 generare confusione per i programmatori che passano da un linguaggio all&#8217;altro.<\/p>\n<p>Attualmente, in PHP il seguente codice \u00e8 corretto:<\/p>\n<pre><code class=\"language-php\">$b = $a == 1 ? 'one' : $a == 2 ? 'two' : $a == 3 ? 'three' : 'other';<\/code><\/pre>\n<p>\u00c8 interpretato come:<\/p>\n<pre><code class=\"language-php\">$b = (($a == 1 ? 'one' : $a == 2) ? 'two' : $a == 3) ? 'three' : 'other';<\/code><\/pre>\n<p>Questo potrebbe portare ad errori perch\u00e9 potrebbe non essere ci\u00f2 che intendiamo fare. Quindi questo RFC propone di deprecare e rimuovere l&#8217;uso dell&#8217;associativit\u00e0 a sinistra per gli operatori ternari e di costringere gli sviluppatori a utilizzare le parentesi.<\/p>\n<p>\u00c8 un&#8217;altra proposta in due fasi:<\/p>\n<ul>\n<li>A partire da PHP 7.4, gli operatori ternari nidificati senza l&#8217;uso esplicito delle parentesi generano un avviso di deprecazione.<\/li>\n<li><a href=\"https:\/\/kinsta.com\/it\/blog\/php-8\/\">A partire da PHP 8.0<\/a>, ci sar\u00e0 un errore di runtime.<\/li>\n<\/ul>\n<p>Questa proposta \u00e8 stata approvata con 35 voti favorevoli contro 10 sfavorevoli.<\/p>\n<h2 class=\"has-anchor-hash\">Cosa significa PHP 7.4 per gli utenti di WordPress?<span id=\"what-does-php-73-mean-for-wordpress-users\" class=\"anchor-hash\" aria-hidden=\"true\"><\/span><\/h2>\n<p>PHP \u00e8 il linguaggio di programmazione lato server pi\u00f9 utilizzato sul web. <a href=\"https:\/\/w3techs.com\/technologies\/details\/pl-php\/all\/all\">Secondo W3Techs<\/a>, al 2 dicembre 2019, l&#8217;uso di PHP \u00e8 utilizzato dal 78,9% di tutti i siti web di cui \u00e8 possibile rilevare il linguaggio di programmazione lato server.<\/p>\n<p><span style=\"font-family: Roboto, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;font-size: 1rem\"><div><\/div><kinsta-auto-toc list-style=\"disc\" selector=\"h3\" count-number=\"5\" sub-toc=\"true\"><\/kinsta-auto-toc><br \/>\n<\/span><\/p>\n<figure style=\"width: 1222px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2019\/05\/versioni-php.png\" alt=\"Versioni PHP\" width=\"1222\" height=\"552\"><figcaption class=\"wp-caption-text\">Utilizzo di PHP (maggio 2019)<\/figcaption><\/figure>\n<p>Sfortunatamente, <a href=\"https:\/\/w3techs.com\/technologies\/details\/pl-php\/5\/all\">PHP 5 \u00e8 ancora utilizzato dal 52,4%<\/a> di tutti i siti web con un linguaggio di programmazione lato server noto. Se si aggiunge <a href=\"https:\/\/w3techs.com\/technologies\/details\/pl-php\/7\/all\">il numero di utenti che utilizzano ancora PHP 7.0<\/a>, risulta che una grande maggioranza di siti web ha ancora in esecuzione versioni non supportate di PHP.<\/p>\n<figure style=\"width: 2048px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2019\/05\/versioni-php-2.png\" alt=\"Versioni PHP supportate\" width=\"2048\" height=\"514\"><figcaption class=\"wp-caption-text\">Versioni PHP supportate (origine immagine: <a href=\"https:\/\/www.php.net\/supported-versions.php\">Supported Versions<\/a>)<\/figcaption><\/figure>\n<p>Secondo la pagina ufficiale di <a href=\"https:\/\/wordpress.org\/about\/stats\/\" target=\"_blank\" rel=\"noopener noreferrer\">WordPress Stats<\/a>, al momento in cui scriviamo, un enorme 67% di tutti i siti web WordPress gira su versioni non supportate di PHP. Solo poco pi\u00f9 del 3% utilizza l&#8217;ultima versione: <a href=\"https:\/\/kinsta.com\/it\/changelog\/php-7-3\/\" target=\"_blank\" rel=\"noopener noreferrer\">PHP 7.3<\/a>. \u00c8 chiaro che una grande maggioranza di utenti, oltre il 31%, ha ancora in esecuzione PHP 5.6.<\/p>\n<figure style=\"width: 1150px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2019\/05\/wordpress-php.png\" alt=\"Versioni PHP WordPress\" width=\"1150\" height=\"972\"><figcaption class=\"wp-caption-text\">Versioni PHP WordPress (maggio 2019)<\/figcaption><\/figure>\n<p>Vi consigliamo vivamente di chiedere al vostro host <a href=\"https:\/\/kinsta.com\/it\/blog\/versioni-php\/\">una versione di PHP supportata<\/a>, preferibilmente aderente ai <a href=\"https:\/\/wordpress.org\/about\/requirements\/\">requisiti ufficiali di WordPress<\/a>. Al momento in cui scriviamo, maggio 2019, WordPress richiede:<\/p>\n<ul>\n<li>PHP versione 7.3 o superiore.<\/li>\n<li>MySQL versione 5.6 o superiore, O <a href=\"https:\/\/kinsta.com\/it\/blog\/mariadb-contro-mysql\/\">MariaDB<\/a> versione 10.1 o superiore.<\/li>\n<li>Supporto HTTPS<\/li>\n<\/ul>\n<h3 class=\"has-anchor-hash\">PHP 7 Performance<span id=\"php-7-performance\" class=\"anchor-hash\" aria-hidden=\"true\"><\/span><\/h3>\n<p>I numeri sopra riportati sono particolarmente scoraggianti dal punto di vista delle prestazioni, perch\u00e9 PHP 7 ha dimostrato di essere significativamente pi\u00f9 veloce. Ecco alcune statistiche:<\/p>\n<ul>\n<li>I\u00a0<a href=\"http:\/\/talks.php.net\/fluent15#\/wpbench\" target=\"_blank\" rel=\"noopener noreferrer\">benchmark<\/a>\u00a0ufficiali di PHP hanno dimostrato che PHP 7 consente al sistema di eseguire il doppio delle richieste al secondo rispetto a PHP 5.6, a quasi met\u00e0 della latenza.<\/li>\n<li>Anche Christian Vigh ha pubblicato un\u00a0<a href=\"https:\/\/www.phpclasses.org\/blog\/post\/493-php-performance-evolution.html\" target=\"_blank\" rel=\"noopener noreferrer\">confronto delle prestazioni di PHP<\/a>\u00a0in cui ha scoperto che PHP 5.2 era il 400% pi\u00f9 lento di PHP 7.<\/li>\n<li>Andrei Avram ha registrato tempi di esecuzione pi\u00f9 rapidi e <a href=\"https:\/\/blog.andreiavram.ro\/updates-php-performance-increase\/\">minore utilizzo di memoria in PHP 7.4<\/a> rispetto a PHP 7.3<\/li>\n<li>Phoronix ha eseguito alcuni <a href=\"https:\/\/phoronix.com\/scan.php?page=news_item&#038;px=PHP-7.4-Early-Benchmarks\">test di benchmark preventivi con PHP 7.4 Alpha<\/a> e ha visto che era leggermente pi\u00f9 veloce di PHP 7.3.<\/li>\n<\/ul>\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">Upgraded my <a href=\"https:\/\/twitter.com\/kinsta?ref_src=twsrc%5Etfw\">@kinsta<\/a> site to PHP 7.4 and it is like 10x faster. Woot!<\/p>\n<p>&mdash; Ronald Huereca (@RonaldHuereca) <a href=\"https:\/\/twitter.com\/RonaldHuereca\/status\/1201513866313777158?ref_src=twsrc%5Etfw\">December 2, 2019<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<p>Noi abbiamo eseguito i nostri <a href=\"https:\/\/kinsta.com\/it\/blog\/benchmark-php\/\" target=\"_blank\" rel=\"noopener noreferrer\">benchmark delle prestazioni PHP<\/a> con PHP 7.3. Abbiamo visto che WordPress 5.0 su PHP 7.3 poteva eseguire quasi tre volte il numero di transazioni (richieste) al secondo rispetto a PHP 5.6. <strong>A breve pubblicheremo i benchmark di PHP 7.4!<\/strong><\/p>\n<figure style=\"width: 940px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2018\/12\/benchmark-php-wordpress-5.0-v2-1.png\" alt=\"Benchmarks PHP WordPress 5.0\" width=\"940\" height=\"788\"><figcaption class=\"wp-caption-text\">Benchmarks PHP WordPress 5.0<\/figcaption><\/figure>\n<ul>\n<li>Benchmark di WordPress 5.0 PHP 5.6: 91,64 ric\/sec<\/li>\n<li>Risultati benchmark di WordPress 5.0 PHP 7.0: 206,71 ric\/sec<\/li>\n<li>Risultati benchmark di WordPress 5.0 PHP 7.1: 210,98 ric\/sec<\/li>\n<li>Risultati benchmark di WordPress 5.0 PHP 7.2: 229,18 ric\/sec<\/li>\n<li>Risultati benchmark di <strong>WordPress 5.0 PHP 7.3: 253,20 ric\/sec \ud83c\udfc6<\/strong><\/li>\n<\/ul>\n<p>Molti sono lenti ad aggiornare semplicemente per via del tempo necessario a testare tutti i plugin e i temi di terze parti per assicurarsi che funzionino correttamente. Ma molte volte si tratta semplicemente di non averlo ancora fatto.<\/p>\n<h3 class=\"has-anchor-hash\">Verificare la Vostra Versione di PHP<span id=\"checking-your-php-version\" class=\"anchor-hash\" aria-hidden=\"true\"><\/span><\/h3>\n<p>Non siete sicuri di quale versione di PHP state utilizzando? Uno dei modi pi\u00f9 semplici per verificarlo \u00e8 utilizzare uno strumento come <a href=\"https:\/\/kinsta.com\/it\/blog\/test-velocita-pingdom\/\" target=\"_blank\" rel=\"noopener noreferrer\">Pingdom<\/a> o Google Chrome Devtools. Il primo header di richiesta HTTP mostrer\u00e0 in genere la versione.<\/p>\n<figure style=\"width: 1542px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2019\/06\/verifica-versione-php-pingdom.png\" alt=\"Verifica versione PHP in Pingdom\" width=\"1542\" height=\"864\"><figcaption class=\"wp-caption-text\">Verifica versione PHP in Pingdom<\/figcaption><\/figure>\n<p>Tuttavia, questo dipende dall&#8217;host che potrebbe non modificare il valore dell&#8217;intestazione <code>X-Powered-By<\/code>. Molti lo fanno per motivi di sicurezza (incluso Kinsta). In questo caso, potreste non vedere la vostra versione di PHP. In tal caso, se utilizzate <a href=\"https:\/\/kinsta.com\/it\/blog\/wordpress-5-2\/\">WordPress 5.2<\/a> o versioni successive, potete utilizzare lo strumento Salute del Sito. Andate su &#8220;Strumenti&#8221; \u2192 &#8220;Salute del sito&#8221; \u2192 &#8220;Informazioni&#8221; e, nella sezione &#8220;Server&#8221;, troverete la versione PHP del vostro server.<\/p>\n<figure style=\"width: 1954px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2019\/06\/verifica-versione-php-salute-del-sito-wordpress.png\" alt=\"Verifica versione PHP con lo strumento Salute del Sito di WordPress\" width=\"1954\" height=\"720\"><figcaption class=\"wp-caption-text\">Verifica versione PHP con lo strumento Salute del Sito di WordPress<\/figcaption><\/figure>\n<p>In alternativa, potete installare un plugin gratuito come <a href=\"https:\/\/wordpress.org\/plugins\/version-info\/\" target=\"_blank\" rel=\"noopener noreferrer\">Version Info<\/a>, che vi mostrer\u00e0 alcune informazioni di base sul server nella parte inferiore della dashboard di amministrazione di WordPress. Un altro metodo per vedere la vostra versione di PHP \u00e8 il <a href=\"https:\/\/kinsta.com\/it\/blog\/versioni-php\/\" target=\"_blank\" rel=\"noopener noreferrer\">caricamento di un file tramite FTP<\/a>. In alternativa, potete semplicemente contattare il vostro host e chiedere a loro.<\/p>\n<h3 class=\"has-anchor-hash\">Aggiornare a PHP 7.4<span id=\"updating-to-php-74\" class=\"anchor-hash\" aria-hidden=\"true\"><\/span><\/h3>\n<p><strong>La versione finale di PHP 7.4 \u00e8 gi\u00e0 disponibile su Kinsta.<\/strong> Se non siete su Kinsta, potete <a href=\"https:\/\/kinsta.com\/it\/blog\/installare-wordpress-in-locale\/\" target=\"_blank\" rel=\"noopener noreferrer\">testare localmente il vostro sito WordPress<\/a> o verificare i vostri script in un ambiente come <a href=\"https:\/\/docs.docker.com\/get-started\/\" target=\"_blank\" rel=\"noopener noreferrer\">Docker<\/a>, che consente di testare diverse versioni di PHP dalla riga di comando.<\/p>\n<p>Il modo pi\u00f9 semplice per iniziare i test \u00e8 <a href=\"https:\/\/kinsta.com\/it\/docs\/hosting-wordpress\/ambienti-di-staging\/\" target=\"_blank\" rel=\"noopener noreferrer\">creare un ambiente di staging<\/a>, dato che questo assomiglier\u00e0 molto al vostro sito di produzione. Nella dashboard di MyKinsta, fate clic sul vostro sito e passate l&#8217;ambiente in modalit\u00e0 di staging.<\/p>\n<figure id=\"attachment_30395\" aria-describedby=\"caption-attachment-30395\" style=\"width: 1557px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-30395\" src=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2019\/06\/creare-ambiente-staging-wordpress.png\" alt=\"Creare un ambiente di staging per WordPress\" width=\"1557\" height=\"750\" srcset=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2019\/06\/creare-ambiente-staging-wordpress.png 1557w, https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2019\/06\/creare-ambiente-staging-wordpress-300x145.png 300w, https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2019\/06\/creare-ambiente-staging-wordpress-768x370.png 768w, https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2019\/06\/creare-ambiente-staging-wordpress-1024x493.png 1024w\" sizes=\"auto, (max-width: 1557px) 100vw, 1557px\" \/><figcaption id=\"caption-attachment-30395\" class=\"wp-caption-text\">Creare un ambiente di staging per WordPress<\/figcaption><\/figure>\n<p>Quindi, alla voce &#8220;Strumenti&#8221;, cambiate il motore PHP del sito di staging. Potrete cos\u00ec iniziare i test per garantirvi la compatibilit\u00e0 dei vostri temi e plugin di terze parti.<\/p>\n<p>Come per le versioni precedenti di PHP, la nostra <a href=\"https:\/\/kinsta.com\/it\/changelog\/ottimizzazioni-automatiche-database\/#selfhealing-php\">funzione di self-healing PHP<\/a> supporta pienamente PHP 7.4. Se PHP si blocca per qualsiasi motivo, lo riavvieremo automaticamente. Se il riavvio non risolve il problema, il nostro sistema di monitoraggio avviser\u00e0 il nostro <a href=\"https:\/\/kinsta.com\/it\/blog\/sysadmin\/\">team di sysadmin<\/a> per indagare sulla causa del problema.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-important\">\n            <h3>Important<\/h3>\n        <p>Anche se questa \u00e8 una versione stabile, <strong>consigliamo vivamente a tutti di testare PHP 7.4<\/strong> prima di utilizzarlo sul proprio sito live.<\/p>\n<\/aside>\n\n<figure id=\"attachment_30396\" aria-describedby=\"caption-attachment-30396\" style=\"width: 1565px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-30396\" src=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2019\/06\/passare-a-php-7.4.png\" alt=\"Passare a PHP 7.4\" width=\"1565\" height=\"990\" srcset=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2019\/06\/passare-a-php-7.4.png 1565w, https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2019\/06\/passare-a-php-7.4-300x190.png 300w, https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2019\/06\/passare-a-php-7.4-768x486.png 768w, https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2019\/06\/passare-a-php-7.4-1024x648.png 1024w\" sizes=\"auto, (max-width: 1565px) 100vw, 1565px\" \/><figcaption id=\"caption-attachment-30396\" class=\"wp-caption-text\">Passare a PHP 7.4<\/figcaption><\/figure>\n<p>Si vedano tutti i dettagli sulla <a href=\"https:\/\/kinsta.com\/it\/changelog\/php-7-4\/\">release di PHP 7.4 su Kinsta<\/a>.<\/p>\n<h3>Installare ed Eseguire PHP 7.4 su Docker<\/h3>\n<p>Volete testare su Docker? Per fortuna, non \u00e8 necessario compilare e configurare PHP 7.4 manualmente. Se avete gi\u00e0 installato Docker sul vostro sistema, dovete solo installare l&#8217;<a href=\"https:\/\/github.com\/devilbox\/docker-php-fpm-7.4\">immagine Docker non ufficiale PHP-FPM 7.4<\/a> ed eseguire i vostri test dalla riga di comando in pochi secondi.<\/p>\n<figure style=\"width: 570px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2019\/05\/installare-php74-nginx-2.png\" alt=\"Installare l'immagine di Nginx in Docker\" width=\"570\" height=\"365\"><figcaption class=\"wp-caption-text\">Installare l&#8217;immagine di Nginx in Docker<\/figcaption><\/figure>\n<p>Se preferite eseguire il vostro codice PHP 7.4 nel browser, dovete anche installare un&#8217;immagine di <a href=\"https:\/\/kinsta.com\/it\/blog\/nginx-verso-apache\/\">Nginx o Apache<\/a>. Ma non preoccupatevi. Seguite le <a href=\"https:\/\/github.com\/devilbox\/docker-php-fpm-7.4#example\">indicazioni dello sviluppatore<\/a>. Copiate e incollate i comandi dalla pagina dell&#8217;Immagine di Docker nel vostro terminale dei comandi e siete subito pronti a partire.<\/p>\n\n<h2>Riepilogo<\/h2>\n<p>In questo post, abbiamo descritto un buon numero delle novit\u00e0 introdotte con il rilascio di PHP 7.4. Se state cercando l&#8217;elenco completo delle funzionalit\u00e0, con la documentazione ufficiale delle RFC, consultate le seguenti risorse:<\/p>\n<ul>\n<li><a href=\"https:\/\/wiki.php.net\/rfc#php_74\">PHP 7.4 Requests for Comments<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/php\/php-src\/blob\/PHP-7.4\/UPGRADING\">PHP 7.4 Upgrade Notes<\/a><\/li>\n<li><a href=\"https:\/\/wiki.php.net\/todo\/php74\">PHP 7.4 Preparation Tasks<\/a><\/li>\n<\/ul>\n<p>Vi terremo aggiornati su tutte le novit\u00e0 riguardanti PHP 7.4 e le sue release. Se siete clienti di Kinsta, potete gi\u00e0 iniziare a spostare i vostri siti WordPress sull&#8217;ultima versione.<\/p>\n<p>Pronti a <a href=\"https:\/\/kinsta.com\/it\/blog\/installare-php\/\">installare e testare le prossime funzionalit\u00e0 di PHP<\/a>? Qual \u00e8 quella che preferite? Condividete i le vostre considerazioni con noi nei commenti.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>PHP 7.4, la pi\u00f9 recente minor release di PHP 7, \u00e8 stato rilasciato alla General Availability il 28 novembre 2019. Quindi \u00e8 il momento per noi &#8230;<\/p>\n","protected":false},"author":36,"featured_media":25580,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[26188],"class_list":["post-25564","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-aggiornamenti-php"],"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 PHP 7.4 (Presto in Arrivo)<\/title>\n<meta name=\"description\" content=\"PHP 7.4 sta arrivando con nuove funzionalit\u00e0, deprecazioni e un miglioramento delle prestazioni. Ecco una panoramica approfondita delle novit\u00e0 di PHP 7.4!\" \/>\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\/php-7-4\/\" \/>\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 PHP 7.4 (Funzionalit\u00e0, Deprecazioni, Velocit\u00e0)\" \/>\n<meta property=\"og:description\" content=\"PHP 7.4 sta arrivando con nuove funzionalit\u00e0, deprecazioni e un miglioramento delle prestazioni. Ecco una panoramica approfondita delle novit\u00e0 di PHP 7.4!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/it\/blog\/php-7-4\/\" \/>\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=\"2019-06-17T09:34:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-02-01T14:10:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2019\/06\/PHP_7.4.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"730\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Carlo Daniele\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"PHP 7.4 sta arrivando con nuove funzionalit\u00e0, deprecazioni e un miglioramento delle prestazioni. Ecco una panoramica approfondita delle novit\u00e0 di PHP 7.4!\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2019\/06\/PHP_7.4.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@carlodaniele\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_IT\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Carlo Daniele\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"19 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/php-7-4\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/php-7-4\/\"},\"author\":{\"name\":\"Carlo Daniele\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63\"},\"headline\":\"Cosa c&#8217;\u00e8 di Nuovo in PHP 7.4 (Funzionalit\u00e0, Deprecazioni, Velocit\u00e0)\",\"datePublished\":\"2019-06-17T09:34:15+00:00\",\"dateModified\":\"2023-02-01T14:10:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/php-7-4\/\"},\"wordCount\":3253,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/php-7-4\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2019\/06\/PHP_7.4.jpg\",\"articleSection\":[\"Sviluppo WordPress\"],\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/php-7-4\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/php-7-4\/\",\"url\":\"https:\/\/kinsta.com\/it\/blog\/php-7-4\/\",\"name\":\"Cosa c'\u00e8 di Nuovo in PHP 7.4 (Presto in Arrivo)\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/php-7-4\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/php-7-4\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2019\/06\/PHP_7.4.jpg\",\"datePublished\":\"2019-06-17T09:34:15+00:00\",\"dateModified\":\"2023-02-01T14:10:15+00:00\",\"description\":\"PHP 7.4 sta arrivando con nuove funzionalit\u00e0, deprecazioni e un miglioramento delle prestazioni. Ecco una panoramica approfondita delle novit\u00e0 di PHP 7.4!\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/php-7-4\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/php-7-4\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/php-7-4\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2019\/06\/PHP_7.4.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2019\/06\/PHP_7.4.jpg\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/php-7-4\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Aggiornamenti PHP\",\"item\":\"https:\/\/kinsta.com\/it\/argomenti\/aggiornamenti-php\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Cosa c&#8217;\u00e8 di Nuovo in PHP 7.4 (Funzionalit\u00e0, Deprecazioni, Velocit\u00e0)\"}]},{\"@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\/962dde02ea6f5df089b5d8d0853bbc63\",\"name\":\"Carlo Daniele\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g\",\"caption\":\"Carlo Daniele\"},\"description\":\"Carlo is a passionate lover of webdesign and front-end development. He has been playing with WordPress for more than 20 years, also in collaboration with Italian and European universities and educational institutions. He has written hundreds of articles and guides about WordPress, published both on Italian and international websites, as well as on printed magazines. You can find him on LinkedIn.\",\"sameAs\":[\"https:\/\/frammentidicodice.com\/\",\"https:\/\/x.com\/carlodaniele\"],\"url\":\"https:\/\/kinsta.com\/it\/blog\/author\/carlodaniele\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Cosa c'\u00e8 di Nuovo in PHP 7.4 (Presto in Arrivo)","description":"PHP 7.4 sta arrivando con nuove funzionalit\u00e0, deprecazioni e un miglioramento delle prestazioni. Ecco una panoramica approfondita delle novit\u00e0 di PHP 7.4!","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\/php-7-4\/","og_locale":"it_IT","og_type":"article","og_title":"Cosa c'\u00e8 di Nuovo in PHP 7.4 (Funzionalit\u00e0, Deprecazioni, Velocit\u00e0)","og_description":"PHP 7.4 sta arrivando con nuove funzionalit\u00e0, deprecazioni e un miglioramento delle prestazioni. Ecco una panoramica approfondita delle novit\u00e0 di PHP 7.4!","og_url":"https:\/\/kinsta.com\/it\/blog\/php-7-4\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstaitalia\/","article_published_time":"2019-06-17T09:34:15+00:00","article_modified_time":"2023-02-01T14:10:15+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2019\/06\/PHP_7.4.jpg","type":"image\/jpeg"}],"author":"Carlo Daniele","twitter_card":"summary_large_image","twitter_description":"PHP 7.4 sta arrivando con nuove funzionalit\u00e0, deprecazioni e un miglioramento delle prestazioni. Ecco una panoramica approfondita delle novit\u00e0 di PHP 7.4!","twitter_image":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2019\/06\/PHP_7.4.jpg","twitter_creator":"@carlodaniele","twitter_site":"@Kinsta_IT","twitter_misc":{"Scritto da":"Carlo Daniele","Tempo di lettura stimato":"19 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/it\/blog\/php-7-4\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/blog\/php-7-4\/"},"author":{"name":"Carlo Daniele","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/962dde02ea6f5df089b5d8d0853bbc63"},"headline":"Cosa c&#8217;\u00e8 di Nuovo in PHP 7.4 (Funzionalit\u00e0, Deprecazioni, Velocit\u00e0)","datePublished":"2019-06-17T09:34:15+00:00","dateModified":"2023-02-01T14:10:15+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/php-7-4\/"},"wordCount":3253,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/php-7-4\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2019\/06\/PHP_7.4.jpg","articleSection":["Sviluppo WordPress"],"inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/it\/blog\/php-7-4\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/it\/blog\/php-7-4\/","url":"https:\/\/kinsta.com\/it\/blog\/php-7-4\/","name":"Cosa c'\u00e8 di Nuovo in PHP 7.4 (Presto in Arrivo)","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/php-7-4\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/php-7-4\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2019\/06\/PHP_7.4.jpg","datePublished":"2019-06-17T09:34:15+00:00","dateModified":"2023-02-01T14:10:15+00:00","description":"PHP 7.4 sta arrivando con nuove funzionalit\u00e0, deprecazioni e un miglioramento delle prestazioni. Ecco una panoramica approfondita delle novit\u00e0 di PHP 7.4!","breadcrumb":{"@id":"https:\/\/kinsta.com\/it\/blog\/php-7-4\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/it\/blog\/php-7-4\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/blog\/php-7-4\/#primaryimage","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2019\/06\/PHP_7.4.jpg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2019\/06\/PHP_7.4.jpg","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/it\/blog\/php-7-4\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/it\/"},{"@type":"ListItem","position":2,"name":"Aggiornamenti PHP","item":"https:\/\/kinsta.com\/it\/argomenti\/aggiornamenti-php\/"},{"@type":"ListItem","position":3,"name":"Cosa c&#8217;\u00e8 di Nuovo in PHP 7.4 (Funzionalit\u00e0, Deprecazioni, Velocit\u00e0)"}]},{"@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\/962dde02ea6f5df089b5d8d0853bbc63","name":"Carlo Daniele","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/429e5568f88110fd9a409b84cb22197e?s=96&d=mm&r=g","caption":"Carlo Daniele"},"description":"Carlo is a passionate lover of webdesign and front-end development. He has been playing with WordPress for more than 20 years, also in collaboration with Italian and European universities and educational institutions. He has written hundreds of articles and guides about WordPress, published both on Italian and international websites, as well as on printed magazines. You can find him on LinkedIn.","sameAs":["https:\/\/frammentidicodice.com\/","https:\/\/x.com\/carlodaniele"],"url":"https:\/\/kinsta.com\/it\/blog\/author\/carlodaniele\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/25564","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\/36"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/comments?post=25564"}],"version-history":[{"count":17,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/25564\/revisions"}],"predecessor-version":[{"id":63179,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/25564\/revisions\/63179"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/25564\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/25564\/translations\/it"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/25564\/translations\/nl"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/25564\/translations\/fr"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/25564\/translations\/es"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/25564\/translations\/dk"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/25564\/translations\/jp"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/25564\/translations\/de"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/25564\/translations\/se"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/25564\/translations\/pt"},{"href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/25564\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media\/25580"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media?parent=25564"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/tags?post=25564"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/topic?post=25564"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}