{"id":79527,"date":"2024-11-08T14:36:54","date_gmt":"2024-11-08T13:36:54","guid":{"rendered":"https:\/\/kinsta.com\/it\/?p=79527&#038;preview=true&#038;preview_id=79527"},"modified":"2024-11-11T12:32:10","modified_gmt":"2024-11-11T11:32:10","slug":"php-8-4","status":"publish","type":"post","link":"https:\/\/kinsta.com\/it\/blog\/php-8-4\/","title":{"rendered":"PHP 8.4: ecco cosa c&#8217;\u00e8 di nuovo e di migliorato"},"content":{"rendered":"<p>\u00c8 finalmente arrivato l&#8217;autunno, e con lui il tempo di una nuova versione di <a href=\"https:\/\/kinsta.com\/php\">PHP<\/a>, il linguaggio di scripting lato server che alimenta il nostro CMS preferito, <a href=\"https:\/\/kinsta.com\/wordpress\">WordPress<\/a>. In vista del lancio della versione 8.4, previsto per il 21 novembre, gli sviluppatori di PHP hanno presentato numerose prime versioni della nuova base di codice, tra cui una manciata di release candidate dopo il blocco delle feature di agosto.<\/p>\n<p>Oltre alle nuove funzionalit\u00e0, ai miglioramenti e alle deprecazioni che sappiamo arrivare in questo periodo dell&#8217;anno, il 2024 ha visto delle modifiche al ciclo di rilascio di PHP, con la fine dei rilasci di sicurezza per tutte le versioni attualmente supportate sincronizzata con la fine dell&#8217;anno invece che con il suo compleanno della sua disponibilit\u00e0 generale (GA).<\/p>\n<p>Inoltre, il supporto \u00e8 stato esteso di un anno, il che significa che potrete utilizzare PHP 8.4 in tutta sicurezza fino al 2028 (con due anni di correzioni di sicurezza e bug e due anni di sole correzioni di sicurezza).<\/p>\n<p>Anche se passerete parecchio tempo con PHP 8.4, probabilmente volete scoprire subito le novit\u00e0 di questa versione. Perci\u00f2, iniziamo.<\/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>Nuove funzionalit\u00e0 e miglioramenti in PHP 8.4<\/h2>\n<p>Le nuove funzionalit\u00e0 incluse nel rilascio di <a href=\"https:\/\/kinsta.com\/it\/blog\/php-8-3\/\">PHP 8.3<\/a> lo scorso anno sembreranno di poco conto se paragonate ad alcune delle aggiunte presenti nella versione 8.4:<\/p>\n<div><\/div><kinsta-auto-toc list-style=\"disc\" selector=\"h3\" count-number=\"6\" sub-toc=\"true\"><\/kinsta-auto-toc>\n<h3>Hook delle propriet\u00e0 <\/h3>\n<p>Gli hook delle propriet\u00e0 offrono un approccio completamente nuovo alla gestione dei &#8220;getter&#8221; e dei &#8220;setter&#8221; nella <a href=\"https:\/\/kinsta.com\/it\/blog\/php-oop\/\">programmazione orientata agli oggetti di PHP<\/a> (object-oriented programming, OOP), consentendo di semplificare la struttura dei propri file di classe.<\/p>\n<p>Come esempio di ci\u00f2 che gli hook delle propriet\u00e0 possono sostituire, la semplice classe qui sotto include le propriet\u00e0 <code>$size<\/code> e <code>$flavor<\/code>. Esse hanno visibilit\u00e0 <code>private<\/code> per proteggerle dall&#8217;accesso diretto all&#8217;esterno dell&#8217;oggetto risultante. Ecco perch\u00e9 i metodi pubblici getter e setter mediano l&#8217;accesso alle propriet\u00e0:<\/p>\n<pre><code class=\"language-php\">class Coffee\n{\n    private string $size;\n    private string $flavor;\n    public function __construct(string $size, string $flavor) {\n        $this-&gt;size   = $size;\n        $this-&gt;flavor = $flavor;\n    }\n\n    \/\/ \"Setting\" coffee size and flavor\n    public function setSize(string $size): void {\n        $this-&gt;size = $size;\n    }\n    public function setFlavor(string $flavor): void {\n        $this-&gt;flavor = $flavor;\n    }\n\n    \/\/ \"Getting\" coffee size and flavor\n    public function getSize(): string {\n        return $this-&gt;size;\n    }\n    public function getFlavor(): string {\n        return $this-&gt;flavor;\n    }\n} \/\/ End of class\n\n\/\/ Make some coffee\n$coffee = new Coffee('Small', 'Pumpkin Spice');\nprint $coffee-&gt;getSize() . ' ' . $coffee-&gt;getFlavor(); \/\/ Prints \"Small Pumpkin Spice\"\n\n\/\/ Change order\n$coffee-&gt;setSize('Grande');\n$coffee-&gt;setFlavor('Mocha');\nprint $coffee-&gt;getSize() . ' ' . $coffee-&gt;getFlavor(); \/\/ Prints \"Grande Mocha\"<\/code><\/pre>\n<p>Oppure, forse la vostra classe ha molte propriet\u00e0 e, invece di scrivere molti metodi getter e setter, potete utilizzare i metodi magici <code>_get<\/code> e <code>_set<\/code> di PHP. Potreste anche risolvere il tutto con una dichiarazione <code>switch<\/code> un po&#8217; disordinata, come questo estratto qui sotto.<\/p>\n<pre><code class=\"language-php\">\/\/ __set magic method example\npublic function __set(string $key, $value): void \n    switch ($key) {\n        case 'size':\n            $this-&gt;size = $value;\n            break;\n        case 'flavor':\n            $this-&gt;flavor = $value;\n            break;\n        default:\n            throw new InvalidArgumentException('Invalid input');\n        }\n}\n\n\/\/ Later, we can change the coffee order like this:\n$coffee-&gt;size = 'Grande';\n$coffee-&gt;flavor = 'Mocha';<\/code><\/pre>\n<p>Qualunque sia l&#8217;approccio scelto, pi\u00f9 propriet\u00e0 avete nella vostra classe, pi\u00f9 il codice utilizzato per manipolarle sar\u00e0 lontano dalle loro definizioni all&#8217;inizio del file di classe. Inoltre, alcune implementazioni dei metodi magici <code>_get<\/code> e <code>_set<\/code> possono fornire inaspettatamente l&#8217;accesso a propriet\u00e0 private o protette del vostro oggetto che non avevate intenzione di esporre.<\/p>\n<p>La nuova funzione di hook delle propriet\u00e0 raggruppa le funzionalit\u00e0 di getter e setter con le propriet\u00e0 stesse. Nell&#8217;esempio di hook delle propriet\u00e0 riportato di seguito, noterete che le propriet\u00e0 <code>$size<\/code> e <code>$flavor<\/code> della classe Coffee sono ora pubbliche. Ma abbiamo anche aggiunto una convalida di base agli hook <code>set<\/code>, differenziandoli dalle assegnazioni dirette.<\/p>\n<pre><code class=\"language-php\">\/\/ Property definitions at the top of our Coffee class\nclass Coffee\n{\n    public string $flavor {\n        set(string $value) {\n            if (strlen($value) &gt; 16) throw new InvalidArgumentException('Input is too long');\n                $this-&gt;flavor = $value;\n        }\n    }\n\n    public string $size {\n        set(string $value) {\n            if (! in_array($value, array(\u2018Small\u2019, \u2018Grande\u2019))) throw new InvalidArgumentException('Not a valid size');\n                $this-&gt;size = $value;\n        }\n    }\n\n    \/\/ Rest of the Coffee class\n}\n\n\/\/ Define a coffee\n$coffee = new Coffee();\n$coffee-&gt;size = 'Grande';\n$coffee-&gt;flavor = 'Pumpkin spice';<\/code><\/pre>\n<p>Allo stesso modo, come potete vedere qui sotto, un hook <code>get<\/code> pu\u00f2 racchiudere delle funzionalit\u00e0 in quello che sembra essere un normale riferimento a una propriet\u00e0 dell&#8217;oggetto.<\/p>\n<pre><code class=\"language-php\">\/\/ Simplified Coffee class\nclass Coffee\n{\n    public string $flavor {\n        get { \n            return $this-&gt;flavor . ' Spice';\n       }\n    }\n}\n\n\/\/ Create a flavor \n$coffee = new Coffee();\n$coffee-&gt;flavor = 'Pumpkin'; \/\/ Stores the value \"Pumpkin\"\nprint $coffee-&gt;flavor;       \/\/ Prints \"Pumpkin Spice\"<\/code><\/pre>\n<p>A differenza dei metodi magici di PHP, gli hook delle propriet\u00e0 possono essere utilizzati nelle interfacce e nelle classi astratte. Un esempio di interfaccia:<\/p>\n<pre><code class=\"language-php\">interface Coffee\n{\n    public string $size { get; set; }\n    public string $flavor { get; set; }\n}<\/code><\/pre>\n<h3>Visibilit\u00e0 asimmetrica<\/h3>\n<p>I metodi getter e setter visibili pubblicamente che abbiamo visto in precedenza rappresentano l&#8217;approccio tradizionale all&#8217;accesso alle propriet\u00e0 private e protette all&#8217;interno delle classi.<\/p>\n<p>Una caratteristica interessante di PHP 8.4 \u00e8 la possibilit\u00e0 per una propriet\u00e0 di avere diversi livelli di visibilit\u00e0 a seconda del contesto in cui vi si accede. Quindi, una propriet\u00e0 potrebbe essere pubblica quando viene letta, ma privata o protetta quando viene impostata.<\/p>\n<p>Guardate qui:<\/p>\n<pre><code class=\"language-php\">class Coffee\n{\n    public private(set) string $flavor = 'Pumpkin Spice';\n}\n\n$coffee = new Coffee();\nprint $coffee-&gt;flavor;     \/\/ Prints \"Pumpkin Spice\"\n$coffee-&gt;flavor = 'Mocha';  \/\/ Error (visibility)<\/code><\/pre>\n<p>Qui sopra, la propriet\u00e0 <code>$flavor<\/code> della classe \u00e8 pubblica tranne che in un contesto di impostazione. \u00c8 gi\u00e0 abbastanza semplice, ma la visibilit\u00e0 asimmetrica ha anche una scorciatoia:<\/p>\n<pre><code class=\"language-php\">class Coffee\n{\n    \/\/ public is assumed when the context is not setting\n    private(set) string $flavor = 'Pumpkin Spice';\n}<\/code><\/pre>\n<p>\u00c8 possibile usare gli hook delle propriet\u00e0 e la visibilit\u00e0 asimmetrica in combinazione per ottenere un&#8217;enorme flessibilit\u00e0 nel lavorare con le propriet\u00e0 degli oggetti di varia visibilit\u00e0.<\/p>\n<h3>Concatenare <code>new<\/code> senza parentesi<\/h3>\n<p>Parlando di abbreviazioni, la chiamata a <code>new<\/code> e il concatenamento di metodi richiedeva l&#8217;inserimento dell&#8217;invocazione tra parentesi, come in questo caso:<\/p>\n<pre><code class=\"language-php\">$coffee = (new Coffee())-&gt;getFlavor()-&gt;getSize();<\/code><\/pre>\n<p>PHP 8.4 consente questo:<\/p>\n<pre><code class=\"language-php\">$coffee = new Coffee()-&gt;getFlavor()-&gt;getSize();<\/code><\/pre>\n<p>Pu\u00f2 sembrare una modifica di poco conto, ma l&#8217;eliminazione di due sole parentesi rende molto pi\u00f9 semplice la lettura e il debug.<\/p>\n<h3>Nuove funzioni per trovare gli elementi di un array<\/h3>\n<p>Per quanto riguarda il reparto &#8220;Ma perch\u00e9, non potevamo gi\u00e0 farlo?&#8221;, PHP 8.4 introduce la funzione <code>array_find()<\/code>, che pu\u00f2 cercare gli elementi dell&#8217;array per i membri che corrispondono alle condizioni espresse in una funzione di callback. La funzione restituisce il valore del primo elemento che corrisponde al test del callback.<\/p>\n<p>La nuova versione include altre tre funzioni correlate:<\/p>\n<ul>\n<li><code>array_find_key()<\/code>: come <code>array_find()<\/code>, ma il valore restituito \u00e8 la chiave dell&#8217;elemento corrispondente invece del valore dell&#8217;elemento stesso.<\/li>\n<li><code>array_all()<\/code>: restituisce <code>true<\/code> se <em>ogni<\/em> elemento dell&#8217;array testato corrisponde al test del callback.<\/li>\n<li><code>array_any()<\/code>: restituisce <code>true<\/code> se <em>almeno uno<\/em> degli elementi dell&#8217;array corrisponde al test del callback.<\/li>\n<\/ul>\n<p>Le ultime due funzioni restituiscono indicatori booleani invece di chiavi o contenuti dell&#8217;array.<\/p>\n<p>Ecco alcuni rapidi esempi:<\/p>\n<pre><code class=\"language-php\">$array = [\n    'a' =&gt; 'Mocha',\n    'b' =&gt; 'Caramel',\n    'c' =&gt; 'Maple',\n    'd' =&gt; 'Pumpkin'\n   ];\n\n\/\/ Find the first flavor name that is 5 characters long\nvar_dump(array_find($array, function (string $value) {\n    return strlen($value) == 5;\n})); \/\/ Returns \u201cMocha,\u201d even though \u201cMaple\u201d is the same length \n\n\/\/ Find the array key for the first flavor with a name longer than 5 characters.\nvar_dump(array_find_key($array, function (string $value) {\n    return strlen($value) &gt; 5;\n})); \/\/ Returns \u201cb\u201d\n\n\/\/ Check to see if any flavor name is less than 5 characters long\nvar_dump(array_any($array, function (string $value) {\n    return strlen($value) &lt; 5;\n})); \/\/ Returns false\n\n\/\/ Check to see if all flavor names are shorter than 8 characters\nvar_dump(array_all($array, function (string $value) {\n    return strlen($value) &lt; 8;\n})); \/\/ Returns true<\/code><\/pre>\n<h3>Parsing di HTML5<\/h3>\n<p>L&#8217;HTM5 \u00e8 lo standard definitivo per la struttura delle pagine web moderne, ma la tecnologia di parsing del Document Object Model (DOM) di PHP si era fermata all&#8217;HTML 4.01.<\/p>\n<p>Piuttosto che eseguire l&#8217;upgrade della classe <code>DOMDocument<\/code> esistente che funziona con i vecchi standard HTML, PHP 8.4 \u00e8 dotato di una nuova classe <code>DomHTMLDocument<\/code> pronta per HTM5.<\/p>\n<p>Potete importare il contenuto di una pagina HTML5 in questo modo:<\/p>\n<pre><code class=\"language-php\">$document = DomHTMLDocument::createFromString($html)<\/code><\/pre>\n<p>Oltre al costruttore <code>createFromString($html)<\/code> di cui sopra, la classe supporta anche <code>createFromFile($path)<\/code> e <code>createEmpty()<\/code><\/p>\n<p>Il nuovo parser riconosce i tag HTML5 semantici come <code>main<\/code>, <code>article<\/code> e <code>section<\/code> che ormai sono familiari alla maggior parte di noi.<\/p>\n<h3>Funzioni di trim multibyte<\/h3>\n<p>Un&#8217;altra aggiunta di PHP 8.4 che aspettavamo da tempo \u00e8 il supporto del multibyte nelle funzioni di trim:<\/p>\n<ul>\n<li><code>mb_trim()<\/code><\/li>\n<li><code>mb_ltrim()<\/code><\/li>\n<li><code>mb_rtrim()<\/code><\/li>\n<\/ul>\n<p>Come la storica funzione PHP <code>trim()<\/code>, <code>mb_trim<\/code> rimuove gli spazi bianchi e alcuni caratteri speciali, come gli avanzamenti di riga, da entrambe le estremit\u00e0 di una stringa che pu\u00f2 contenere caratteri multibyte. Le altre funzioni tagliano l&#8217;estremit\u00e0 sinistra o destra di una stringa.<\/p>\n<h2>Deprecazioni in PHP 8.4<\/h2>\n<p>Ogni versione di PHP porta con s\u00e9 una lista di caratteristiche e funzioni (alcune piuttosto oscure) che vengono segnalate per l&#8217;eventuale rimozione dalla piattaforma. Una deprecazione di alto profilo in PHP 8.4 \u00e8 il tracciamento delle sessioni senza cookie.<\/p>\n<h3>Deprecazione delle sessioni GET\/POST<\/h3>\n<p>Sebbene i <a href=\"https:\/\/kinsta.com\/it\/blog\/cookie-wordpress-e-sessioni-php\/\">cookie<\/a> siano generalmente il metodo preferito per tracciare le sessioni degli utenti, PHP ha supportato il fissaggio dei dati dell&#8217;ID di sessione nei parametri GET\/POST. Per abilitare il tracciamento delle sessioni tramite parametri negli URL, l&#8217;impostazione PHP <code>session.use_only_cookies<\/code> \u00e8 disabilitata e l&#8217;impostazione <code>session.use_trans_sid<\/code> pu\u00f2 essere abilitata.<\/p>\n<p>Con PHP 8.4, uno di questi stati per le impostazioni attiver\u00e0 un avviso di deprecazione che potrebbe apparire nei log del vostro sito web. Quando verr\u00e0 rilasciato PHP 9, queste impostazioni non saranno pi\u00f9 disponibili.<\/p>\n<h3>Altre deprecazioni (e rimozioni) in PHP 8.4<\/h3>\n<p>Di seguito \u00e8 riportato un elenco di funzionalit\u00e0 che il team di PHP 8.4 ha deciso di deprecare. (Alcune includono link a ulteriori informazioni sulle funzionalit\u00e0&#8230;),<\/p>\n<ul>\n<li>Deprecate formalmente le propriet\u00e0 <code>DOMDocument<\/code> e <code>DOMEntity<\/code>.<\/li>\n<li>Rimosso <code>DOMImplementation::getFeature($feature, $version)<\/code>.<\/li>\n<li>Deprecata la costante <code>DOM_PHP_ERR<\/code>.<\/li>\n<li>Deprecato il tag &#8220;S&#8221; in <code><a href=\"http:\/\/www.php.net\/unserialize\" target=\"_blank\" rel=\"noopener noreferrer\">unserialize<\/a>()<\/code>.<\/li>\n<li>Deprecate <code>session.sid_length<\/code> e <code>session.sid_bits_per_character<\/code>.<\/li>\n<li>Deprecato <code>SplFixedArray::__wakeup()<\/code>.<\/li>\n<li>Deprecati <code><a href=\"http:\/\/www.php.net\/xml_set_object\" target=\"_blank\" rel=\"noopener noreferrer\">xml_set_object()<\/a><\/code> e <code>xml_set_*_handler()<\/code> con nomi di metodi stringa.<\/li>\n<li>Deprecato il passaggio di null e false a <code><a href=\"http:\/\/www.php.net\/dba_key_split\" target=\"_blank\" rel=\"noopener noreferrer\">dba_key_split()<\/a><\/code>.<\/li>\n<li>Deprecato il passaggio di tipi di dati errati per le opzioni alle funzioni ext\/hash.<\/li>\n<li>Deprecate le costanti <code>SUNFUNCS_RET_STRING<\/code>, <code>SUNFUNCS_RET_DOUBLE<\/code>, <code>SUNFUNCS_RET_TIMESTAMP<\/code>.<\/li>\n<li>Deprecato il meccanismo di escape proprietario di CSV.<\/li>\n<li>Deprecata la costante <code>E_STRICT<\/code>.<\/li>\n<li>Deprecato <code><a href=\"http:\/\/www.php.net\/strtok\" target=\"_blank\" rel=\"noopener noreferrer\">strtok()<\/a><\/code>.<\/li>\n<li>Deprecata la restituzione di valori non stringa da un gestore di output utente.<\/li>\n<li>Deprecata la produzione di output in un gestore di output utente.<\/li>\n<li>Deprecato <code><a href=\"http:\/\/www.php.net\/file_put_contents\" target=\"_blank\" rel=\"noopener noreferrer\">file_put_contents()<\/a><\/code> con <code>$data<\/code> come array.<\/li>\n<li>Deprecati <code><a href=\"http:\/\/www.php.net\/mysqli_ping\" target=\"_blank\" rel=\"noopener noreferrer\">mysqli_ping()<\/a><\/code> e <code>mysqli::ping()<\/code><\/li>\n<li>Deprecato <code>mysqli_refresh()<\/code>.<\/li>\n<li>Deprecato <code><a href=\"http:\/\/www.php.net\/mysqli_kill\" target=\"_blank\" rel=\"noopener noreferrer\">mysqli_kill()<\/a><\/code>.<\/li>\n<li>Deprecato il secondo parametro di <code><a href=\"http:\/\/www.php.net\/mysqli_store_result\" target=\"_blank\" rel=\"noopener noreferrer\">mysqli_store_result()<\/a><\/code>.<\/li>\n<li>Deprecato <code><a href=\"http:\/\/www.php.net\/lcg_value\" target=\"_blank\" rel=\"noopener noreferrer\">lcg_value()<\/a><\/code>.<\/li>\n<li>Deprecato <code><a href=\"http:\/\/www.php.net\/uniqid\" target=\"_blank\" rel=\"noopener noreferrer\">uniqid()<\/a><\/code>.<\/li>\n<li>Deprecati <code><a href=\"http:\/\/www.php.net\/md5\" target=\"_blank\" rel=\"noopener noreferrer\">md5()<\/a><\/code>, <code><a href=\"http:\/\/www.php.net\/sha1\" target=\"_blank\" rel=\"noopener noreferrer\">sha1()<\/a><\/code>, <code><a href=\"http:\/\/www.php.net\/md5_file\" target=\"_blank\" rel=\"noopener noreferrer\">md5_file()<\/a><\/code>, e <code><a href=\"http:\/\/www.php.net\/sha1_file\" target=\"_blank\" rel=\"noopener noreferrer\">sha1_file()<\/a><\/code>.<\/li>\n<li>Deprecato il passaggio di <code>E_USER_ERROR<\/code> a <code><a href=\"http:\/\/www.php.net\/trigger_error\" target=\"_blank\" rel=\"noopener noreferrer\">trigger_error()<\/a><\/code>.<\/li>\n<li>Deprecato l&#8217;uso di un singolo trattino basso (&#8220;_&#8221;) come nome di classe.<\/li>\n<li>Deprecata la costante <code>SOAP_FUNCTIONS_ALL<\/code> e il suo passaggio a <code>SoapServer::addFunction()<\/code>.<\/li>\n<\/ul>\n<h2>Riepilogo<\/h2>\n<p>PHP 8.4 presenta alcuni cambiamenti interessanti. Non vediamo l&#8217;ora di mettere questa versione sui nostri server per il nostro <a href=\"https:\/\/kinsta.com\/it\/blog\/benchmark-php\/\">benchmarking annuale di PHP<\/a>, ovvero il nostro test con vari <a href=\"https:\/\/kinsta.com\/it\/blog\/framework-php\/\">sistemi di gestione dei contenuti basati su PHP<\/a>.<\/p>\n<p>Siamo anche interessati a vedere quando <a href=\"https:\/\/kinsta.com\/it\/blog\/tipi-di-developer\/\">gli sviluppatori<\/a> inizieranno a incorporare alcune delle nuove funzionalit\u00e0 di PHP 8.4 nei loro progetti, in particolare gli hook delle propriet\u00e0.<\/p>\n<p><em>Quali sono le vostre caratteristiche preferite di PHP 8.4? Condividete i vostri pensieri con la nostra community nei commenti!<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00c8 finalmente arrivato l&#8217;autunno, e con lui il tempo di una nuova versione di PHP, il linguaggio di scripting lato server che alimenta il nostro CMS &#8230;<\/p>\n","protected":false},"author":259,"featured_media":79528,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[26188,26187],"class_list":["post-79527","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-aggiornamenti-php","topic-funzione-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>PHP 8.4: cosa c&#039;\u00e8 di nuovo e di migliorato<\/title>\n<meta name=\"description\" content=\"Se \u00e8 autunno, \u00e8 tempo di una nuova versione di PHP. Ecco le principali novit\u00e0 della nuova versione di PHP, la 8.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-8-4\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PHP 8.4: ecco cosa c&#039;\u00e8 di nuovo e di migliorato\" \/>\n<meta property=\"og:description\" content=\"Se \u00e8 autunno, \u00e8 tempo di una nuova versione di PHP. Ecco le principali novit\u00e0 della nuova versione di PHP, la 8.4.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/it\/blog\/php-8-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=\"2024-11-08T13:36:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-11T11:32:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/11\/what-is-new-in-php-8-4.png\" \/>\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\/png\" \/>\n<meta name=\"author\" content=\"Steve Bonisteel\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Se \u00e8 autunno, \u00e8 tempo di una nuova versione di PHP. Ecco le principali novit\u00e0 della nuova versione di PHP, la 8.4.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/11\/what-is-new-in-php-8-4-1024x512.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=\"Steve Bonisteel\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 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-8-4\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/php-8-4\/\"},\"author\":{\"name\":\"Steve Bonisteel\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f\"},\"headline\":\"PHP 8.4: ecco cosa c&#8217;\u00e8 di nuovo e di migliorato\",\"datePublished\":\"2024-11-08T13:36:54+00:00\",\"dateModified\":\"2024-11-11T11:32:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/php-8-4\/\"},\"wordCount\":1336,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/php-8-4\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/11\/what-is-new-in-php-8-4.png\",\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/php-8-4\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/php-8-4\/\",\"url\":\"https:\/\/kinsta.com\/it\/blog\/php-8-4\/\",\"name\":\"PHP 8.4: cosa c'\u00e8 di nuovo e di migliorato\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/php-8-4\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/php-8-4\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/11\/what-is-new-in-php-8-4.png\",\"datePublished\":\"2024-11-08T13:36:54+00:00\",\"dateModified\":\"2024-11-11T11:32:10+00:00\",\"description\":\"Se \u00e8 autunno, \u00e8 tempo di una nuova versione di PHP. Ecco le principali novit\u00e0 della nuova versione di PHP, la 8.4.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/php-8-4\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/php-8-4\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/php-8-4\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/11\/what-is-new-in-php-8-4.png\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/11\/what-is-new-in-php-8-4.png\",\"width\":1460,\"height\":730},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/php-8-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\":\"PHP 8.4: ecco cosa c&#8217;\u00e8 di nuovo e di migliorato\"}]},{\"@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\/d84ceff87bd64a4368a581fc8aa8bd6f\",\"name\":\"Steve Bonisteel\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g\",\"caption\":\"Steve Bonisteel\"},\"description\":\"Steve Bonisteel is a Technical Editor at Kinsta who began his writing career as a print journalist, chasing ambulances and fire trucks. He has been covering Internet-related technology since the late 1990s.\",\"url\":\"https:\/\/kinsta.com\/it\/blog\/author\/stevebonisteel\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"PHP 8.4: cosa c'\u00e8 di nuovo e di migliorato","description":"Se \u00e8 autunno, \u00e8 tempo di una nuova versione di PHP. Ecco le principali novit\u00e0 della nuova versione di PHP, la 8.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-8-4\/","og_locale":"it_IT","og_type":"article","og_title":"PHP 8.4: ecco cosa c'\u00e8 di nuovo e di migliorato","og_description":"Se \u00e8 autunno, \u00e8 tempo di una nuova versione di PHP. Ecco le principali novit\u00e0 della nuova versione di PHP, la 8.4.","og_url":"https:\/\/kinsta.com\/it\/blog\/php-8-4\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstaitalia\/","article_published_time":"2024-11-08T13:36:54+00:00","article_modified_time":"2024-11-11T11:32:10+00:00","og_image":[{"width":1460,"height":730,"url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/11\/what-is-new-in-php-8-4.png","type":"image\/png"}],"author":"Steve Bonisteel","twitter_card":"summary_large_image","twitter_description":"Se \u00e8 autunno, \u00e8 tempo di una nuova versione di PHP. Ecco le principali novit\u00e0 della nuova versione di PHP, la 8.4.","twitter_image":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/11\/what-is-new-in-php-8-4-1024x512.png","twitter_creator":"@Kinsta_IT","twitter_site":"@Kinsta_IT","twitter_misc":{"Scritto da":"Steve Bonisteel","Tempo di lettura stimato":"10 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/it\/blog\/php-8-4\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/blog\/php-8-4\/"},"author":{"name":"Steve Bonisteel","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f"},"headline":"PHP 8.4: ecco cosa c&#8217;\u00e8 di nuovo e di migliorato","datePublished":"2024-11-08T13:36:54+00:00","dateModified":"2024-11-11T11:32:10+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/php-8-4\/"},"wordCount":1336,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/php-8-4\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/11\/what-is-new-in-php-8-4.png","inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/it\/blog\/php-8-4\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/it\/blog\/php-8-4\/","url":"https:\/\/kinsta.com\/it\/blog\/php-8-4\/","name":"PHP 8.4: cosa c'\u00e8 di nuovo e di migliorato","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/php-8-4\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/php-8-4\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/11\/what-is-new-in-php-8-4.png","datePublished":"2024-11-08T13:36:54+00:00","dateModified":"2024-11-11T11:32:10+00:00","description":"Se \u00e8 autunno, \u00e8 tempo di una nuova versione di PHP. Ecco le principali novit\u00e0 della nuova versione di PHP, la 8.4.","breadcrumb":{"@id":"https:\/\/kinsta.com\/it\/blog\/php-8-4\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/it\/blog\/php-8-4\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/blog\/php-8-4\/#primaryimage","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/11\/what-is-new-in-php-8-4.png","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2024\/11\/what-is-new-in-php-8-4.png","width":1460,"height":730},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/it\/blog\/php-8-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":"PHP 8.4: ecco cosa c&#8217;\u00e8 di nuovo e di migliorato"}]},{"@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\/d84ceff87bd64a4368a581fc8aa8bd6f","name":"Steve Bonisteel","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g","caption":"Steve Bonisteel"},"description":"Steve Bonisteel is a Technical Editor at Kinsta who began his writing career as a print journalist, chasing ambulances and fire trucks. He has been covering Internet-related technology since the late 1990s.","url":"https:\/\/kinsta.com\/it\/blog\/author\/stevebonisteel\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/79527","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\/259"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/comments?post=79527"}],"version-history":[{"count":5,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/79527\/revisions"}],"predecessor-version":[{"id":79539,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/79527\/revisions\/79539"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/79527\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/79527\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/79527\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/79527\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/79527\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/79527\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/79527\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/79527\/translations\/es"},{"href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/79527\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media\/79528"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media?parent=79527"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/tags?post=79527"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/topic?post=79527"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}