Nelle scorse ore è stato rilasciato PHP 8.4 (già aggiornato alla versione 8.4.1), una release che integra nuove funzionalità nel linguaggio con lo scopo di incrementare la produttività e facilitare la manutenzione del codice. Tra le novità principali troviamo i property hooks, la visibilità asimmetrica e miglioramenti all'API DOM. In linea generale vengono comunque confermate le anticipazioni fornite durante le fasi di test.
Property Hooks in PHP 8.4
Questa funzionalità introduce proprietà direttamente supportate da IDE e strumenti di analisi statica, eliminando la necessità di getter e setter ridondanti. Consente inoltre di gestire in modo nativo pre e post elaborazioni dei valori delle proprietà.
Prima di PHP 8.4, i getter e setter dovevano essere scritti manualmente. Con questa versione, invece, è possibile definire proprietà che semplificano il codice rendendolo più snello, pulito e leggibile.
Visibilità asimmetrica
Il linguaggio permette ora di specificare separatamente i permessi di lettura e scrittura delle proprietà con parole chiave come public private(set)
. Questa novità riduce la necessità di metodi getter per accedere a proprietà che non devono essere modificate dall'esterno della classe.
Attributo #[\Deprecated]
L'introduzione dell'attributo #[\Deprecated]
rende il sistema di deprecazione più esplicito e utile in fase di coding. Gli sviluppatori possono infatti associare messaggi, versioni di riferimento e contesti specifici per segnalare quando si utilizzano funzioni o metodi obsoleti.
Aggiornamenti DOM e supporto HTML5
PHP 8.4 migliora l'estensione ext-dom
, raggiungendo una maggiore compatibilità con HTML5 e nuove funzionalità per la manipolazione dei documenti DOM. Il tutto con l'obbiettivo di facilitare lo sviluppo di applicazioni web moderne.
Miglioramenti delle prestazioni
Come accaduto con le versioni precedenti, PHP 8.4 introduce ulteriori ottimizzazioni, riducendo il tempo di esecuzione delle operazioni comuni e migliorando l'efficienza delle applicazioni.
Nuove funzioni per gli array
Da segnalare anche le nuove funzioni per la gestione degli array (array_find()
, array_find_key()
, array_any()
e array_all()
). Ad esse si associa un nuovo metodo per l'istanza delle classi, senza l'uso di parentesi, nonché una Object API per BCMath e, naturalmente, diversi costrutti ora deprecati.