Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

PHP 8.1: array_is_list, unpacking degli array ed enum

Analizziamo quelle che potrebbero essere alcune delle principali novità di PHP 8.1, release attesa per novembre 2021
PHP 8.1: array_is_list, unpacking degli array ed enum
Analizziamo quelle che potrebbero essere alcune delle principali novità di PHP 8.1, release attesa per novembre 2021
Link copiato negli appunti

In attesa di novembre, mese durante il quale potrebbe essere disponibile la versione definitiva di questa nuova versione, è possibile anticipare alcune di quelle che dovrebbero essere le principali novità di PHP 8.1. L'analisi che segue deve essere letta tenendo conto che non tutte le feature descritte hanno superato lo stato embrionale d'implementazione, inoltre, anche se si tratta di un'eventualità improbabile è comunque sempre possibile che una o più tra di esse non faccia parte del rilascio previsto in autunno.

La funzione array_is_list()

array_is_list() è una funzione nativa che restituisce un valore booleano ed è stata pensata per verificare che le chiavi presenti in un array siano ordinate numericamente a partire dall'indice 0, la sua utilità è simile a quella di json_encode() che, restituendo la rappresentazione JSON di un valore, permette di stabilire se un array debba essere codificato come un array o come un oggetto.

Un esempio di utilizzo di array_is_list() potrebbe essere il seguente:

# definizione di un array
$xyz = ["x", "y", "z"];
array_is_list($xyz); // restituisce true
$n_xyz = [1 => "x", 2 => "y", 3 => "z"];
array_is_list($n_xyz); // restituisce false
$a_xyz = ["x" => "x", "y" => "y", "z" => "z"];
array_is_list($a_xyz); // restituisce false

Nel codice proposto in precedenza la funzione viene richiamata 3 volte su array contenenti criteri di ordinamento delle chiavi differenti, soltanto nel primo caso verrà restituito TRUE in quanto l'array viene indicizzato automaticamente partendo da 0.

Unpacking degli array

In questo caso parliamo di una funzionalità già presente in PHP 7.4 ma disponibile soltanto per i vettori con chiavi numeriche. Potendo utilizzare questa volta anche le chiavi in formato stringa ora sarà possibile scrivere espressioni come la seguente:

$array_x = ["x" => 1];
$array_y = ["y" => 2];
$array_z = ["x" => 0, ...$array_x, ...$array_y];
var_dump($array_z); // restituisce ["x" => 1, "y" => 2]

Si noti l'impiego dello splat operator (...) che viene impiegato appunto per combinare delle variabili in un array. Prima di PHP l'unpacking con chiavi stringa non era stato introdotto in quanto gli sviluppatori non avevano trovato ancora un accordo riguardo alle modalità di merging degli array duplicati.

Enumeration

Ancora in fase di approvazione nel momento in cui viene scritto questo articolo, le Enumeration fanno riferimento ad un tipo di dato enum che consente di categorizzare dei valori in operazioni come per esempio le rappresentazioni di stato. Si pensi a tal proposito allo status di un post in un blog che può essere in "bozza" così come "pubblicato" etc.

enum Stato {
  case Bozza;
  case Revisione;
  case Attivo;
}

La dichiarazione proposta genera un nuovo enum chiamato Stato che accetta soltanto 3 valori: Stato::Bozza, Stato:Revisione e Stato::Attivo. L'assegnazione delle variabili può essere quindi effettuata unicamente utilizzando uno di questi valori.

Data una funzione come la seguente:

function assegna_stato(Stato $stato) { ... }

consente di effettuare un'assegnazione come la seguente:

$x = Stato::Bozza;

e di eseguire delle chiamate valide come delle seguenti:

assegna_stato($x);
assegna_stato(Stato::Revisione);

ma non di passare ad essa valori arbitrari, cioè che non siano il tipo Stato:

assegna_stato('Attivo');

Il nuovo costrutto potrebbe non presentare alcun case, risultando corretto dal punto di vista sintattico ma sostanzialmente inutile. Nel contempo non esiste un numero massimo di case definibili.

Ti consigliamo anche