PHP 8.5 spiegato semplice: pipe, clone, array e URI
Le novità di PHP 8.5, pubblicato il 20 novembre 2025, con esempi e controlli di compatibilità prima dell’aggiornamento.
Le novità di PHP 8.5, pubblicato il 20 novembre 2025, con esempi e controlli di compatibilità prima dell’aggiornamento.
Versione e compatibilità
PHP 8.5 è una release della serie 8, pubblicata il 20 novembre 2025. Il passaggio da 8.4 a 8.5 cambia la versione minore, non la prima cifra. Prima di aggiornare un sito in produzione verifica requisiti del framework, estensioni e hosting, leggi la guida di migrazione e prova codice e plugin in staging con backup e piano di ritorno.
Operatore pipe
L’operatore |> applica funzioni chiamabili da sinistra a destra. Nell’esempio trim(...) e strtolower(...) sono callable di prima classe; la funzione anonima riceve il risultato del passaggio precedente. Non tutte le espressioni arbitrarie sono valide sul lato destro; usa funzioni o callable. Il risultato è più leggibile quando una trasformazione ha molti passaggi.
<?php
$title = ' PHP 8.5 Released ';
$slug = $title |> trim(...) |> (fn($s) => str_replace(' ', '-', $s)) |> strtolower(...);
var_dump($slug); // string(16) "php-8.5-released"
Clone con proprietà modificate
La nuova forma clone($oggetto, ['proprietà' => valore]) crea una copia e assegna proprietà durante la clonazione, utile anche per classi readonly. L’esempio modifica alpha nella copia senza cambiare l’originale. È diverso dal metodo con clone $oggetto seguito da un’assegnazione, che non può riscrivere una proprietà readonly già inizializzata.
<?php
readonly class Color {
public function __construct(public int $red, public int $alpha = 255) {}
public function withAlpha(int $alpha): self {
return clone($this, ['alpha' => $alpha]);
}
}
$original = new Color(79);
$copy = $original->withAlpha(128);
Primo e ultimo valore di un array
array_first() e array_last() restituiscono i valori secondo l’ordine dell’array, non la chiave minima o massima. Su un array vuoto restituiscono null; se null è anche un valore possibile, distingui prima il caso vuoto. Non modificano il puntatore interno come reset() ed end().
<?php
$items = ['first', 'middle', 'last'];
var_dump(array_first($items)); // "first"
var_dump(array_last($items)); // "last"
var_dump(array_first([])); // null
Estensione URI
L’API Uri\Rfc3986\Uri consente di analizzare URI secondo RFC 3986; PHP 8.5 include anche API legate al modello WHATWG. La scelta dipende dall’uso. L’esistenza dell’estensione non elimina automaticamente librerie esterne, validazione degli URL, controlli degli host né la verifica di sicurezza delle richieste remote.
<?php
use Uri\Rfc3986\Uri;
$uri = new Uri('https://example.com/path?q=1');
var_dump($uri->getHost()); // "example.com"
Deprecazioni e aggiornamento
I nomi di cast (boolean), (integer), (double) e (binary) sono deprecati: usa (bool), (int), (float), (string). Sono deprecati anche i backtick come alias di shell_exec(). Passare a shell_exec() rende l’intento esplicito, non rende sicuro eseguire input non attendibile: evita comandi di shell quando possibile e non concatenare dati esterni. Controlla warning e incompatibilità nel manuale di migrazione prima della pubblicazione.
Fonti ufficiali
Annuncio: https://www.php.net/releases/8.5/en.php ; nuove funzioni: https://www.php.net/manual/en/migration85.new-functions.php ; deprecazioni: https://www.php.net/manual/en/migration85.deprecated.php ; migrazione: https://www.php.net/manual/en/migration85.php .
Share
What's Your Reaction?
Like
0
Cancella like
0
Amore
0
Buffo
0
arrabbiato
0
Sad
0
Wow
0