PHP 8.4: Vediamo cosa c'è di nuovo, le funzionalità e i miglioramenti
Indice
Ricca di potenti funzionalità e miglioramenti, l’ultima versione di PHP 8.4 promette di rendere la programmazione più efficiente e flessibile.
Rilasciata ufficialmente a fine novembre 2024, in SiteGround, PHP 8.4 è diventata disponibile in versione beta da agosto 2024, quando siamo stati tra le prime aziende a renderla disponibile per i test su tutti i nostri server.
Da allora, abbiamo visto che sta diventando sempre più popolare. Oltre 6000 proprietari di siti web ospitati su SiteGround l’hanno già provata sui propri siti.
Se ti stai chiedendo se dovresti fare il passaggio e di cosa si tratta, continua a leggere perché copriremo tutto ciò che devi sapere su PHP 8.4, dalle sue caratteristiche distintive ai consigli pratici su chi ne trarrà maggior beneficio. Iniziamo!
Punti Chiave di PHP 8.4
PHP 8.4 segna un aggiornamento significativo nel ciclo di vita di PHP, introducendo correzioni di bug, funzionalità e miglioramenti che ottimizzano le prestazioni e lo sviluppo.
Funzionalità come la gestione avanzata delle proprietà, nuove funzioni di supporto e strumenti avanzati per database semplificano la programmazione e migliorano l’efficienza.
Utilizzare le versioni più recenti aiuta anche a proteggere dalle vulnerabilità a lungo termine.
Tuttavia, come proprietario di un sito web, devi fare attenzione, perché le versioni più recenti potrebbero non essere compatibili con il tuo sito web. Per questo consigliamo di testarla prima su una copia di staging del sito web.
Cronologia del Rilascio e SiteGround
PHP 8.4 (Beta 3) è stata rilasciata il 15 agosto 2024. SiteGround ne ha introdotto l’accesso anticipato il 20 agosto 2024, così i nostri clienti potevano usarla per fare dei test il prima possibile.
Il rilascio generale (GA) di PHP 8.4 è avvenuto il 21 novembre 2024. SiteGround ha aggiunto la versione ufficiale ai nostri server il 26 novembre 2024, solo cinque giorni dopo l’annuncio.
Cosa c’è di Nuovo in PHP 8.4?
PHP 8.4 introduce numerose nuove funzionalità che possono essere categorizzate in miglioramenti della sintassi, miglioramenti delle librerie e delle API, e una migliore manipolazione degli array.
1. Miglioramenti della Sintassi e del Linguaggio
1.1. Hook delle proprietà
Nelle versioni di PHP precedenti alla 8.4, la gestione dell’accesso e della modifica delle proprietà tipicamente richiedeva la definizione di metodi getter e setter espliciti all’interno di una classe.
Questo approccio, sebbene funzionale, spesso portava a un codice più verboso e separava il comportamento della proprietà dalla sua dichiarazione.
class User {
private string $firstName;
private string $lastName;
public function __construct(string $firstName, string $lastName) {
$this->firstName = $firstName;
$this->lastName = $lastName;
}
public function getFullName(): string {
return $this->firstName . ' ' . $this->lastName;
}
public function setFullName(string $fullName): void {
[$this->firstName, $this->lastName] = explode(' ', $fullName, 2);
}
}
$user = new User('John', 'Doe');
echo $user->getFullName(); // Outputs: John Doe
$user->setFullName('Jane Smith');
echo $user->getFullName(); // Outputs: Jane Smith
In questo esempio, i metodi getFullName e setFullName vengono utilizzati per accedere e modificare il nome completo dell’utente.
Con l’introduzione dei property hooks in PHP 8.4, gli sviluppatori possono ora definire comportamenti personalizzati per l’accesso (get) e la modifica (set) delle proprietà direttamente nella dichiarazione della proprietà.
Questa funzionalità semplifica il codice incorporando la logica direttamente nella proprietà stessa.
Utilizzo dei Property Hooks in PHP 8.4:
class User {
private string $firstName;
private string $lastName;
public function __construct(string $firstName, string $lastName) {
$this->firstName = $firstName;
$this->lastName = $lastName;
}
public string $fullName {
get => $this->firstName . ' ' . $this->lastName;
set {[$this->firstName, $this->lastName] = explode(' ', $value, 2);}
}
}
$user = new User('John', 'Doe');
echo $user->fullName; // Outputs: John Doe
$user->fullName = 'Jane Smith';
echo $user->fullName; // Outputs: Jane Smith
In questo esempio aggiornato, la proprietà fullName utilizza i property hooks per definire i comportamenti get e set direttamente nella sua dichiarazione.
Questo approccio riduce la necessità di metodi separati e mantiene la logica della proprietà incapsulata nella sua definizione.
Per una comprensione completa e ulteriori esempi, consulta il manuale ufficiale di PHP sui property hooks.
1.2. Visibilità Asimmetrica
In PHP 8.4, la visibilità asimmetrica consente agli sviluppatori di definire livelli di accesso separati per la lettura e la scrittura delle proprietà delle classi.
![Uno screenshot di un frammento di codice dalla documentazione ufficiale di PHP.net, che evidenzia come i nuovi miglioramenti di visibilità asimmetrica cambiano le pratiche di codifica.](https://static-blog.siteground.com/wp-content/uploads/sites/3/2025/02/php-visibilita-asimmetrica-1024x521.jpeg)
La dichiarazione di visibilità public private(set) viene utilizzata per consentire l’accesso pubblico per la lettura ma limitare l’accesso privato per impostarne il valore. Questo permette alla proprietà di essere leggibile dall’esterno della classe ma modificabile solo all’interno della classe.
1.3. Attributo #[\Deprecated]
Con PHP 8.4, l’attributo #[\Deprecated] è stato introdotto per contrassegnare classi, metodi, funzioni o proprietà come deprecati.
Questo serve come indicazione formale che l’elemento contrassegnato è sconsigliato per l’uso e potrebbe essere rimosso nelle versioni future.
Utilizzare questo attributo migliora la chiarezza del codice e aiuta gli sviluppatori a identificare e abbandonare le funzionalità deprecate.
1.4. New MyClass()->method() senza Parentesi
Con PHP 8.4, è stata migliorata la sintassi per invocare un metodo direttamente dopo aver creato una nuova istanza di una classe. In precedenza, era necessario istanziare una classe e poi richiamare un metodo su tale istanza in due passaggi separati:
$instance = new MyClass();
$instance->method();
Con PHP 8.4, puoi ora concatenare la chiamata al metodo direttamente all’istanza, eliminando la necessità delle parentesi:
new MyClass->method();
Questa sintassi semplificata migliora la leggibilità del codice e ne riduce la verbosità.
2. Miglioramenti delle Librerie e delle API
2.1. Object API per BCMath
Con PHP 8.4, l’estensione BCMath introduce la classe BcMath\Number, fornendo un approccio orientato agli oggetti per l’aritmetica a precisione arbitraria.
![Uno screenshot di un frammento di codice dalla documentazione ufficiale di PHP.net, che evidenzia come implementare un approccio orientato agli oggetti per l'aritmetica a precisione arbitraria utilizzando la nuova classe BcMath\Number.](https://static-blog.siteground.com/wp-content/uploads/sites/3/2025/02/oggetto-API-BCMath-1024x329.jpeg)
Questo miglioramento consente un codice più intuitivo e leggibile quando si eseguono calcoli decimali.
2.2. Nuove funzionalità ext-dom con supporto HTML5 avanzato
L’estensione ext-dom è stata migliorata per fornire un supporto robusto e conforme agli standard per l’analisi e la manipolazione dei documenti HTML5.
Questo miglioramento affronta problemi di lunga data e introduce nuove funzionalità che semplificano il lavoro con i contenuti HTML5.
Miglioramenti chiave:
- Introduzione della classe Dom\HTMLDocument:
- Una nuova classe, Dom\HTMLDocument, è stata aggiunta allo spazio dei nomi Dom. Questa classe offre un’interfaccia moderna e orientata agli oggetti per la gestione dei documenti HTML5, garantendo una migliore integrazione e usabilità.
- Miglioramento dell’analisi e della serializzazione:
- La nuova API fornisce un’analisi e una serializzazione accurate dei documenti HTML5, risolvendo i precedenti problemi di conformità. Questo assicura che i contenuti HTML5 siano gestiti correttamente, facilitando una manipolazione più affidabile dei documenti.
- Funzionalità avanzate:
- Sono state introdotte diverse nuove funzioni per semplificare compiti comuni, come la ricerca di elementi utilizzando i selettori CSS e l’attraversamento del DOM. Queste aggiunte rendono più conveniente lavorare con i documenti HTML5.
2.3. Sottoclassi specifiche per driver PDO
Con PHP 8.4, l’introduzione di sottoclassi specifiche per driver PDO migliora la flessibilità e la funzionalità dell’estensione PDO (PHP Data Objects). Questo miglioramento consente agli sviluppatori di accedere a funzionalità del database come parser SQL specifici per driver, che erano precedentemente inaccessibili tramite la classe generica PDO.
Caratteristiche chiave:
- Accesso a metodi specifici per driver: ogni driver PDO ha ora la propria sottoclasse, consentendo l’accesso a metodi unici per quel sistema di database. Ad esempio, la sottoclasse Pdo\Sqlite fornisce metodi come createFunction(), che sono specifici per SQLite.
- Chiarezza del codice migliorata: utilizzando queste sottoclassi, il codice diventa più leggibile e gestibile, poiché le funzionalità specifiche del database sono incapsulate all’interno delle rispettive classi.
// Utilizzo di PDO::connect() per istanziare la sottoclasse specifica per driver
$pdo = PDO::connect('sqlite:/path/to/database.db');
// Utilizzo del metodo specifico per driver
$pdo->createFunction('my_function', function($value) {
return strtoupper($value);
});
In questo esempio, PDO::connect() restituisce un’istanza di Pdo\Sqlite, permettendo l’accesso a metodi specifici di SQLite come createFunction().
Compatibilità retroattiva:
Questo miglioramento mantiene la compatibilità retroattiva. Il codice esistente che utilizza la classe PDO generica continua a funzionare come prima. Gli sviluppatori possono scegliere di utilizzare le sottoclassi specifiche del driver quando hanno bisogno di accedere a funzionalità specifiche del database.
2.4. Aggiornamenti della libreria standard
Oltre ai principali cambiamenti delle librerie e delle API, PHP 8.4 affina la sua libreria standard con nuove funzioni utili e lievi miglioramenti.
Ad esempio, gli sviluppatori ora hanno accesso a fpow() per l’esponenziazione a virgola mobile, nuovi oggetti lazy e nuovi metodi per gestire gli header delle risposte HTTP.
Inoltre, la libreria DateTime riceve aggiornamenti focalizzati sulla precisione, migliorando il modo in cui PHP gestisce le attività legate al tempo. Questi aggiornamenti, sebbene di portata minore, contribuiscono a un’esperienza di sviluppo più fluida ed efficiente.
3. Nuove funzioni di supporto
PHP 8.4 introduce nuove funzioni per gli array, offrendo modi più versatili ed efficienti per manipolare gli array.
- array_find – Cerca in un array il primo elemento che soddisfa una determinata condizione.
- array_find_key – Trova la chiave del primo elemento in un array che soddisfa una condizione specificata.
- array_any – Verifica se qualche elemento in un array soddisfa una determinata condizione.
- array_all – Determina se tutti gli elementi in un array soddisfano una condizione specificata.
$numbers = [1, 2, 3, 4, 5];
// Trova il primo numero pari
$firstEven = array_find($numbers, fn($n) => $n % 2 === 0);
echo $firstEven; // Output: 2
// Trova la chiave del primo numero maggiore di 3
$key = array_find_key($numbers, fn($n) => $n > 3);
echo $key; // Output: 3
// Verifica se qualche numero è maggiore di 4
$anyGreaterThanFour = array_any($numbers, fn($n) => $n > 4);
var_dump($anyGreaterThanFour); // Output: bool(true)
// Verifica se tutti i numeri sono positivi
$allPositive = array_all($numbers, fn($n) => $n > 0);
var_dump($allPositive); // Output: bool(true)
Queste aggiunte semplificano le operazioni sugli array, migliorano la chiarezza del codice e riducono la necessità di cicli verbosi.
Deprecazioni di PHP 8.4
Con ogni nuova versione di PHP, alcune funzionalità vengono contrassegnate come deprecate per fare spazio a migliori alternative. Le deprecazioni aiutano PHP a evolversi, dando agli sviluppatori il tempo di adattare il proprio codice.
Una deprecazione notevole in PHP 8.4 è la rimozione delle proprietà dinamiche sugli oggetti standard, una funzionalità a lungo utilizzata per assegnazioni di proprietà rapide e ad hoc. Un altro esempio è la deprecazione dei tipi nullable impliciti.
Gli sviluppatori sono ora incoraggiati a utilizzare proprietà tipizzate o metodi magici come __get e __set per migliorare le prestazioni e la chiarezza.
Per un elenco completo delle funzionalità deprecate, puoi consultare la documentazione ufficiale rilasciata dal team di PHP.
1. Cambiamenti retrocompatibili
C’è una differenza tra deprecazioni e cambiamenti retrocompatibili. Con ogni rilascio, ci sono anche cambiamenti che rompono completamente il modo in cui funzionano certe sintassi e funzioni del codice.
Per un elenco completo degli aggiornamenti retrocompatibili, fai riferimento alla documentazione ufficiale di PHP.
Questo significa che devi essere particolarmente attento quando passi a una versione più recente. Spesso, se stai usando software di terze parti, potresti incontrare problemi poiché ci vuole tempo per gli sviluppatori per aggiornare i propri prodotti affinché siano compatibili con la versione più recente di PHP.
Per questo motivo, dovresti utilizzare un ambiente di staging per testare se l’ultima versione rilasciata andrà a rompere parti del tuo sito web. Questo è particolarmente importante se stai attualmente utilizzando una versione precedente alla 8.0.
Ti mostreremo come puoi farlo in sicurezza utilizzando gli strumenti di SiteGround più avanti nell’articolo.
Se gestisci un sito web, è un buon momento per controllare il tuo codice alla ricerca di funzionalità deprecate. Affrontare questi cambiamenti ora può evitarti mal di testa quando le future versioni di PHP le rimuoveranno completamente.
Puoi richiedere un controllo di compatibilità PHP come parte dei nostri servizi di Expert Care, in modo che la revisione e l’aggiornamento possano essere gestiti professionalmente dai nostri tecnici.
2. Supporto delle versioni
PHP 8.4 riceverà supporto attivo per due anni, seguito da due anni di aggiornamenti di sicurezza critici. Puoi consultare la documentazione ufficiale di PHP per le date esatte di scadenza.
Se stai utilizzando una versione deprecata di PHP, ti consigliamo vivamente di aggiornare alla versione stabile più recente per migliorare la sicurezza e le prestazioni.
Come aggiornare a PHP 8.4?
Per la maggior parte degli utenti, consigliamo di rimanere su PHP Gestito per evitare complicazioni e di rompere il tuo sito web in produzione. Se sei un esperto e desideri testare come funziona il tuo sito su 8.4, continua a leggere per imparare come farlo in sicurezza.
1. PHP gestito in SiteGround
Tutti i clienti di SiteGround sono impostati di default per utilizzare il nostro servizio di PHP gestito, il che significa che aggiorneremo automaticamente la tua versione di PHP una volta che una nuova versione stabile diventa disponibile.
Questo è consigliato per la maggior parte degli utenti che non sono esperti di tecnologia, perché le versioni più recenti possono introdurre un conflitto nella tua applicazione a causa di un’incompatibilità con qualche plugin o tema.
Valutiamo attentamente ogni nuovo rilascio di PHP ed eseguiamo test di compatibilità con le applicazioni più utilizzate sulla nostra piattaforma.
A partire da febbraio 2025, la versione predefinita di PHP Gestito sui nostri server è 8.2.
Consigliamo questa versione come l’ultima release più ampiamente compatibile. Prima di aggiornare la nostra versione predefinita di PHP, ci assicuriamo sempre di avere abbastanza dati di utilizzo per garantire la sicurezza, la stabilità e le prestazioni per la maggior parte dei siti web sulla nostra piattaforma.
Per questo motivo lasciamo trascorrere un po’ di tempo prima di aggiornare la nostra versione predefinita a una nuova versione, anche se quest’ultima è disponibile per i test sui nostri server quasi subito dopo l’uscita.
Gli utenti avanzati possono passare manualmente a PHP 8.4 in qualsiasi momento da Site Tools.
2. Compatibilità
Come abbiamo detto, tutte le nuove versioni di PHP possono causare errori sul tuo sito web, quindi è sempre consigliato per prima cosa testare le versioni più recenti in un ambiente di staging.
Offriamo uno strumento semplice e veloce che ti permette di creare un clone del tuo sito WordPress, che puoi utilizzare per verificare eventuali conflitti di plugin o temi prima di aggiornare il tuo sito principale.
![Uno screenshot del pannello Site Tools di SiteGround, dove puoi creare una copia di staging del tuo sito WordPress.](https://static-blog.siteground.com/wp-content/uploads/sites/3/2025/02/strumento-di-staging-1024x439.jpeg)
Una volta creata una copia di staging, segui i passaggi seguenti se desideri passare a PHP 8.4 e vedere come funziona sul tuo sito.
3. Testare PHP 8.4.
La maggior parte dei provider offre uno strumento di gestione PHP per cambiare le diverse versioni per il tuo sito web. Per aggiornare manualmente a 8.4 su SiteGround, accedi a Site Tools > Sviluppatori > Gestione PHP:
![Uno screenshot del PHP manager nel pannello di Site Tools di SiteGround, dove puoi cambiare le impostazioni PHP dei tuoi siti.](https://static-blog.siteground.com/wp-content/uploads/sites/3/2025/02/php-gestore-1024x501.jpg)
Clicca sulla scheda Siti di staging:
![Uno screenshot del PHP manager nel pannello Site Tools di SiteGround, dove puoi cambiare le impostazioni PHP di un sito di staging.](https://static-blog.siteground.com/wp-content/uploads/sites/3/2025/02/staging-gestore-php-1024x385.jpeg)
Clicca sull’icona Cambia versione php sotto Azioni, passa da PHP Gestito a Cambia versione PHP manualmente e seleziona 8.4.3.
![Uno screenshot del menu del pannello Site Tools di SiteGround, dove cambi la versione PHP di un sito web, con un menù a tendina che mostra le versioni disponibili che vanno dalla 8.0 alla 8.4.](https://static-blog.siteground.com/wp-content/uploads/sites/3/2025/02/cambia-versione-php-1024x500.jpeg)
È così semplice! Il passo successivo è verificare se il sito web funziona come previsto. Se qualche funzionalità si rompe, dovrai indagare ulteriormente.
Forse un plugin o il tema che stai utilizzando non è ancora completamente compatibile con la versione più recente. Oppure, potrebbe esserci del codice PHP personalizzato nel tuo sito che necessita di essere rivisto.
In tali casi, è meglio rimanere sulla nostra versione di PHP Gestito e aspettare che questi problemi vengano risolti, prima di aggiornare il tuo sito principale all’ultima versione di PHP.
4. PHP ultraveloce
SiteGround ha una reputazione ben consolidata per concentrarsi sull’ottimizzazione delle prestazioni. Ecco perché il nostro team ha sviluppato una versione personalizzata di PHP che aumenta le prestazioni del sito web fino al 30%.
È disponibile esclusivamente per i nostri utenti con piani GrowBig (e superiori) ed è completamente compatibile con PHP 8.4. Se desideri approfittarne, dai un’occhiata alle nostre soluzioni di Hosting gestito e iscriviti oggi per aumentare la velocità del tuo sito web!
![Un banner promozionale che elenca le caratteristiche uniche di hosting veloce di SiteGround.](https://static-blog.siteground.com/wp-content/uploads/sites/3/2025/01/ottieni-velocita-hosting-banner-1024x512.jpg)
PHP 8.4: riepilogo e prossimi passi
PHP 8.4 è un miglioramento utile sia per gli sviluppatori che per i proprietari di siti web. Con la sua sintassi semplificata, le API migliorate e le nuove funzionalità, semplifica la codifica migliorando le prestazioni e l’affidabilità del sito web.
Rimanere aggiornati con le versioni di PHP è essenziale per mantenere una presenza online veloce e affidabile. Gli aggiornamenti devono essere gestiti con cura, per garantire una transizione fluida e un’esperienza senza interruzioni per i tuoi visitatori.
Per questo motivo è importante utilizzare un provider di hosting che sia al passo con le ultime tecnologie e offra gli strumenti necessari per gestire in sicurezza il tuo sito web.
In SiteGround, abbiamo reso l’aggiornamento davvero semplice. Con i nostri servizi di PHP gestito e PHP ultraveloce, puoi godere di prestazioni al massimo e aggiornamenti senza intoppi.
Pronto a scoprire il meglio che PHP 8.4 ha da offrire? Iscriviti oggi ai nostri piani di hosting gestito e rendi il tuo sito a prova di futuro!
Grazie! Il tuo commento è trattenuto per moderazione e verrà pubblicato a breve, se correlato a questo articolo del blog. I commenti con richieste di assistenza o risoluzione problemi non verranno pubblicati. In tal caso, ti preghiamo di segnalarli tramite
Inizia la discussione
Grazie! Il tuo commento è trattenuto per moderazione e verrà pubblicato a breve, se correlato a questo articolo del blog. I commenti con richieste di assistenza o risoluzione problemi non verranno pubblicati. In tal caso, ti preghiamo di segnalarli tramite