Nuove funzioni per la gestione degli array, nuovo pipe operator, miglioramenti nella clonazione di oggetti e gestione più moderna di URL ed errori: grazie a PHP 8.5 gli sviluppatori del popolare linguaggio di scripting per applicazioni web continuano a introdurre nuove funzionalità senza creare ostacoli inutilmente elevati ai progetti esistenti. Anziché grandi discontinuità, la nuova versione apporta numerosi miglioramenti ben ponderati che fanno la differenza in termini di sinergia.
Per la clientela Hostpoint, ciò significa che può installare in tutta semplicità PHP 8.5, testarlo in modo mirato tramite il Pannello di controllo Hostpoint e introdurre gradualmente la nuova versione. Le relative istruzioni sono disponibili nel nostro Support Center.
Ricerca più rapida del valore rilevante con le funzioni per la gestione degli array
PHP 8.5 introduce due utili funzioni con array_first() e array_last(), che forniscono direttamente il primo e l’ultimo valore di un array. Se l’array è vuoto, entrambe le funzioni restituiscono zero. Integrano le funzioni esistenti array_key_first() e array_key_last(), che restituiscono solo le chiavi.
Finora questo compito veniva spesso svolto con funzioni di utilità personalizzate o con una combinazione di diverse operazioni sugli array. A tal fine, in molti progetti venivano create piccole funzioni di utilità proprie, spesso in diversi punti. Questo funziona, ma comporta la ripetizione di schemi e una gestione non uniforme degli array vuoti.
Con array_first() e array_last(), invece, tali voci sono immediatamente riconoscibili. Ciò consente comunque di mantenere il codice snello e ben leggibile.
Pipe operator |>: catene di elaborazione più leggibili
Il pipe operator |> permette di far passare un valore in sequenza attraverso più funzioni. Il risultato sul lato sinistro viene trasmesso come argomento alla funzione sul lato destro.
Con pipe operator occorre usare la sintassi First-Class-Callable-Syntax, come trim(…) o strtolower(…), in modo che l’espressione possa essere inoltrata come Callable. Questa sintassi è stata introdotta in PHP 8.1 e il vantaggio è che consente di rilevare gli errori di battitura già durante l’analisi statica del codice nell’editor.
Senza pipe operator le catene di elaborazione venivano costituite o tramite chiamate di funzioni annidate o mediante più variabili intermedie. Entrambi i metodi sono tecnicamente corretti, ma diventano facilmente poco chiari se sono necessari più passaggi consecutivi, ad esempio quando si trasformano stringhe o quando si filtrano e si ordinano gli array.
Con |> è possibile leggere il flusso di dati da sinistra a destra. Un valore può essere ottimizzato, convertito in lettere minuscole, filtrato e quindi rielaborato senza che il codice risulti annidato.
Rispetto alle varianti tradizionali con chiamate di funzioni annidate o più variabili intermedie, in alcuni casi le catene pipe operator possono essere più performanti e più efficienti in termini di risorse. Spesso, inoltre, non sono necessarie classi di utilità Collection proprie, che comunque contengono internamente solo array_map() o array_filter().
Per le firme più complesse è comunque utile continuare a utilizzare piccole funzioni anonime. L’operatore completa le strutture esistenti invece di sostituirle completamente.
Cloni di oggetti con proprietà modificate
PHP 8.5 amplia il comportamento di clone(). Quando si clona un oggetto, è possibile personalizzare le proprietà in modo mirato fornendo a clone un array associativo aggiuntivo contenente i nuovi valori di proprietà. Questo è particolarmente adatto a classi invariabili in cui si vogliono creare varianti di un oggetto senza alterare l’originale.
Finora per questi casi venivano implementati dei metodi with che leggevano lo stato attuale dell’oggetto, lo adeguavano in modo selettivo e lo scrivevano in una nuova istanza. Per le classi con molte caratteristiche, questo creava un codice boilerplate molto ampio, che doveva essere ripreso a ogni estensione della classe.
La nuova variante clone() consente di formulare le varianti di un oggetto in modo molto più compatto. Lo scopo è subito riconoscibile: viene generata una copia in cui differiscono solo singoli valori. Ciò è utile, ad esempio, per i modelli di dominio, gli oggetti di configurazione o gli oggetti di valore, che devono rimanere invariati.
Elaborazione sicura e moderna degli URL
La funzione parse_url() non segue uno standard ufficiale e risulta incoerente soprattutto nei casi marginali. Inoltre, la documentazione ufficiale indica esplicitamente che parse_url() non è pensato per input non attendibili o deliberatamente manipolati. Di conseguenza, in molti progetti è stato necessario ricorrere a funzioni di utilità proprie o librerie esterne per analizzare, normalizzare e rielaborare gli URL in modo affidabile e sicuro.
La nuova versione 8.5 di PHP introduce una nuova estensione URI in grado di analizzare ed elaborare gli URL secondo gli standard attuali. Al posto degli array si usano oggetti specializzati che separano chiaramente componenti come schema, host, percorso o parametri query. In questo modo si riduce la necessità di funzioni di utilità specifiche per i progetti e il comportamento diventa più prevedibile, ad esempio quando si creano inoltri o si salvano link esterni.
Panoramica degli altri miglioramenti
Oltre alle grandi novità menzionate, questa versione di PHP apporta una serie di ulteriori miglioramenti, particolarmente evidenti nella gestione di applicazioni di grandi dimensioni o specializzate. OpCache è ora parte integrante dell’installazione PHP e viene caricato di default.
Parallelamente, sono state apportate migliorie a livello diagnostico: funzioni come get_error_handler() e get_exception_handler() permettono di dare un’occhiata alla gestione attiva degli errori, mentre il flag CLI php –ini=diff mostra solo i valori di configurazione che si discostano da quelli predefiniti.
Funzioni obsolete: a cosa prestare attenzione
Come ogni nuova versione, anche PHP 8.5 indica alcuni schemi come obsoleti, ma senza rimuoverli immediatamente. Queste funzioni obsolete generano dapprima degli avvisi e preparano a cambiamenti futuri.
In molti codebase si trovano ancora grafie come (integer), (boolean) o (double) anziché int, bool e float. Inoltre, si trovano ancora i backtick come alias per shell_exec() o vecchi schemi di serializzazione con __sleep() e __wakeup(). PHP 8.5 indica anche come obsolete diverse funzioni “close” come curl_close(), curl_share_close(), finfo_close() o xml_parser_free(), perché da quando queste estensioni sono passate dalle risorse agli oggetti non hanno più alcuna efficacia e gli oggetti associati vengono rilasciati automaticamente.
Chi attiva la visualizzazione degli avvisi e controlla i protocolli in un ambiente di test o di staging, può apportare miglioramenti mirati. Questo riduce a medio termine l’onere per gli upgrade di versione successivi, mantiene i log degli errori brevi e allo stesso tempo assicura che il codice sia più conforme ai suggerimenti dell’attuale generazione PHP.
I nostri consigli per la migrazione
Affinché il passaggio a PHP 8.5 avvenga in modo controllato, è stata consolidata una procedura strutturata e consigliata da Hostpoint:
-
Verificare il progetto e le dipendenze
Per prima cosa faccia un riepilogo: quali framework, librerie ed estensioni utilizza e a partire da quali versioni è ufficialmente supportato PHP 8.5? Le release note dei singoli progetti aiutano a individuare tempestivamente eventuali ostacoli tipici. -
Configurare l’ambiente di staging con PHP 8.5
Configuri un’istanza di test o staging che si avvicini il più possibile al Suo ambiente di produzione. Nel Pannello di controllo Hostpoint può attivare PHP 8.5 per questo ambiente, mentre il sito web in funzione continuerà a funzionare con la versione precedente. -
Testare l’applicazione e controllare i protocolli
Effettui i test automatici già disponibili con PHP 8.5 e verifichi manualmente le funzioni centrali, come le aree di login, i processi di ordinazione o di contatto e le connessioni a sistemi di terzi. Attivi la visualizzazione degli errori e delle indicazioni sulle funzioni obsolete e controlli regolarmente i file di log. -
Adeguare il codice e utilizzare le nuove funzioni in modo mirato
Corregga gli errori e le funzioni obsolete segnalati passo dopo passo. Se l’applicazione è stabile, può aggiornare i punti in cui nuove funzioni come array_first(), array_last(), pipe operator, clone() semplificano visibilmente il codice con aggiornamenti di proprietà o l’estensione URI. -
Pianificare il passaggio e utilizzare le opzioni di Hostpoint
Pianifichi il passaggio definitivo a PHP 8.5 in un momento tranquillo e dopo il passaggio tenga d’occhio i file di log. Se si verificano effetti inattesi, nel Pannello di controllo Hostpoint può tornare in qualsiasi momento alla versione precedente di PHP e analizzare con calma la causa.
Con una buona preparazione, l’upgrade a PHP 8.5 avverrà in modo sicuro ed efficiente senza compromettere la stabilità del sistema. In caso di domande relative alla migrazione il nostro Support Center e il nostro team di assistenza saranno lieti di aiutarla.
Conclusione
Anziché vederla come un upgrade obbligatorio, consideri la nuova versione come un passo in avanti ben ponderato: chi elimina le funzioni obsolete e utilizza nuove funzioni selezionate, come le funzioni per la gestione degli array, il pipe operator o l’estensione URI, elimina i debiti tecnici e crea un margine di manovra per le future versioni di PHP. Grazie alla scelta flessibile della versione di PHP offerta da Hostpoint può pianificare con calma il passaggio, testarlo prima in un ambiente di staging e infine implementarlo gradualmente.















































































