PHP 8.2 è nella sua fase effettiva, fermo già dal 19 luglio 2022. Ciò significa che non dovrebbero esserci novità per chi vuole può scaricare, utilizzare e sfruttare questa soluzione. La versione PHP 8 è ormai pienamente sfruttata da chi cerca un sito web performante.
Aggiornare PHP è importante per le pagine web veloci ma come sempre è utile avere come riferimento qualche indicazione in più rispetto a cosa ci aspetta. Cosa sapere in più su questa release? In primo luogo devi comprendere che le performance sono migliori, e che ci sono diverse novità.
Argomenti
Ci sono molte modifiche da enumerare ma una delle più interessanti è che da PHP 8.1 abbiamo una nuova classe di riferimento per ottenere maggior velocità e reattività dai nostri siti web. La soluzione, grazie ai diversi miglioramenti che vedremo in seguito, ha portato a un miglioramento delle performance.
Il team PHP ha rilasciato PHP 8.2.0 l’8 dicembre 2022. Questa versione contiene molte nuove funzionalità come classi di sola lettura, tipi Disjunctive Normal Form (DNF), nuova estensione Random.
Quindi è stato utilizzato Zend/bench.php per fare un confronto dei tempi tra le diverse versioni di PHP. Ecco il risultato: PHP 8.2.0 è il più veloce con 0,200 secondi e PHP 7.4.33 è il più lento con 0,232 secondi.
I risultati mostrano che il miglioramento delle prestazioni di PHP 8.2 è piuttosto significativo (15%) rispetto a PHP 7.4.33. Ovviamente questo è solo uno degli ingredienti necessari per avere un sito web performante. Ma non è l’unico, bisogna lavorare anche con un hosting di qualità.
Da parte di Serverplan seguirà sempre un costante aggiornamento dell’infrastruttura per avere un hosting performante e con la migliore versione di PHP. Ecco perché questa soluzione di PHP è già disponibile su tutti gli hosting condivisi, VPS Hosting, Cloud Server e Server Dedicati.
Con PHP 8.2 c’è il supporto per le nuove classi readonly
, vale a dire la possibilità di implementare una vecchia soluzione già proposta da PHP 8.1. Nello specifico, prima la funzione readonly
era solo per le proprietà delle classi. PHP 8.2 aggiunge la possibilità di dichiarare l’intera classe come tale.
class BlogData
{
public readonly string $title;
public readonly Status $status;
public function __construct(string $title, Status $status)
{
$this->title = $title;
$this->status = $status;
}
}
Ecco come era prima dell’aggiornamento preso in esame. Con questa novità tutto viene semplificato e velocizzato. Ecco come appare lo stesso codice nella versione PHP 8.2. Ricorda che, come per tutte le altre, la parola chiave readonly
non fa distinzione tra maiuscole e minuscole.
readonly class BlogData
{
public string $title;
public Status $status;
public function __construct(string $title, Status $status)
{
$this->title = $title;
$this->status = $status;
}
}
Ricordiamo che tra le novità di PHP 8.1 c’era fibers
, la soluzione di PHP per funzionare in modo asincrono e interrompersi in alcuni punti senza interferire con l’intera struttura. L’elemento compreso in fibers
può essere avviato, sospeso o terminato in modo indipendente.
L’estensione random ha una nuova API orientata agli oggetti per la generazione di numeri casuali. Questa soluzione fornisce diverse classi con l’accesso ad algoritmi moderni che memorizzano il loro stato all’interno di oggetti per consentire più sequenze indipendenti.
Da leggere: tutte le novità di WordPress
PHP 8.2 approva e permette l’uso di false
e null
come tipi autonomi a favore di una maggior completezza. In quest’ottica viene aggiunto anche il supporto per l’utilizzo true
come dichiarazione di tipo, ovunque siano consentite. Il true
non permette coercizioni, proprio come si comporta attualmente il false
. Si può utilizzare un esempio di codice preso dal comunicato stampa ufficiale per capire come cambia PHP 8.2.
Ci sono diverse ottimizzazioni che riguardano PHP 8.2. Tra le più interessanti è quella che riguarda il Disjunctive Normal Form (DNF). Ovvero modo per organizzare le espressioni booleane. Nello specifico, significa strutturare un’espressione booleana in una serie OR
di AND
. I tipi DNF ci consentono di combinare unione e intersezione seguendo una regola rigida: quando si combinano, le intersezione devono essere raggruppati con parentesi.
Oltre a diverse migliorie per le prestazioni abbiamo anche degli elementi che ci abbandonano. Ad esempio, sono state deprecate le funzioni utf8_encode
e utf8_decode
. Lo stesso vale per i callables parzialmente supportati e il metodo interno SplFileInfo::_bad_state_ex
.