PHP 7: le principali novità

26 giugno 2015

Perché PHP 7?

PHP 6 non vedrà mai la luce, a confermarlo vi è il recente rilascio della versione Alpha di PHP 7; l’ultimo aggiornamento stabile in ordine di tempo del noto linguaggio Open Source per lo scripting server side è stato PHP 5.6 seguito da alcuni upgrade minori, quindi quale è stato il motivo di questo passaggio diretto alla release numero 7? Le ragioni alla base di tale scelta andrebbero ricercate proprio nelle features che gli sviluppatori del progetto avevano intenzione di introdurre in PHP 6.

Tra di esse la più rilevante era sicuramente l’implementazione di un supporto nativo adeguato per la codifica standard Unicode, quest’ultima però si sarebbe rivelata da subito eccessivamente dispendiosa in termini di risorse, senza tener conto dell’effetto negativo a carico delle prestazioni registrato nel corso dei test; il progetto è stato quindi abortito e, chiamati a decidere riguardo al nome della nuova versione del linguaggio, i responsabili del progetto avrebbero optato in larga maggioranza per PHP 7, sottolineando le differenze tra il ramo mai nato e quello successivo.

Stesso discorso per quanto riguarda PHP 5.7; PHPNG (PHP New Generation), che è alla base di PHP 7, era stato interpretato inizialmente come un’alpha di quest’ultima, ma il lavoro svolto sia in termini di integrazione di features addizionali che per quanto riguarda le performances, avrebbe convinto gli sviluppatori a lanciare una nuova major release.

Lo Spaceship Operator

Lo Spaceship Operator, o operatore di confronto combinato, viene rappresentato da una sequenza composta da tre simboli, “<=>“, e funziona in modo relativamente simile alla funzione nativa strcmp() per il confronto case sensitive delle stringhe, ha però la particolarità di poter essere impiegato con qualsiasi tipo di dato supportato da PHP; a livello di costrutto esso richiede una sintassi identica a quella di un qualsiasi altro operatore di confronto e restituisce “0” nel caso in cui gli operandi siano uguali tra loro, “1” se l’operando di sinistra è il più grande e “-1” se ad essere maggiore è invece l’operando di destra.

Volendo fare un semplice esempio basato sui valori numerici decimali (float), potremmo eseguire una verifica sul funzionamento di tale operatore basata su delle istruzioni per la stampa a video:

// restituisce 0
echo 7.3 <=> 7.3;
// restituisce 1
echo 7.3 <=> 3.7;
// restituisce -1 
echo 3.7 <=> 7.3;

Quanto già detto può essere ripetuto seguendo la medesima logica anche per un tipo di dato differente da quello analizzato in precedenza, le stringhe, che rispettano una gerarchia non basata sull’entità di valori, ma su un ordine di priorità:

// restituisce 0
echo "x" <=> "x";
// restituisce 1
echo y <=> x;
// restituisce -1 
echo x <=> y;

Dato che x è uguale a sé stessa, la prima istruzione restituirà 0, restituirà invece 1 nel secondo caso in quanto y è successiva rispetto a (e quindi più grande di) x e -1 nel terzo caso perché x è inferiore a y; array e oggetti verranno gestiti nello stesso modo mostrato negli esempi.

Lo Spaceship Operator potrebbe risultare particolarmente utile nel caso in cui si debbano utilizzare i confronti all’interno di espressioni complesse basate su condizioni; a tal proposito si faccia riferimento al seguente esempio

function space_ship($x, $y) {
    return ($x < $y) ? -1 : (($x > $y) ? 1 : 0);
}

Traducendo l’espressione che rappresenta il valore di ritorno della funzione, si avrebbe che nel caso in cui $x (operando di sinistra) fosse inferiore a $y (operando di destra) allora -1 sarebbe TRUE, nel caso in cui, al contrario, $x fosse maggiore di $y ad essere TRUE sarebbe 1; in alternativa, e quindi nel solo caso di un’identità di valori, verrebbe restituito 0. Il codice proposto in precedenza e il ragionamento appena esposto potranno quindi essere abbreviati in questo modo:

function space_ship($x, $y) {
    return $x <=> $y;
}

Di fatto l’introduzione dell’operatore di confronto combinato rappresenta anche un’opportunità per rendere i sorgenti più brevi e maggiormente leggibili.

Se vuoi aggiornamenti su PHP 7: le principali novità inserisci la tua e-mail nel box qui sotto:
 
X
Se vuoi aggiornamenti su PHP 7: le principali novità

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento di cui al punto 3 dell'informativa sulla privacy