E' arrivata l'estate HOT! Sconti fino al 70% su tutti i corsi!
Davide Copelli WebSU

PHP 7.1 e le principali novità

Articolo a cura di: Davide Copelli {ing}

Facebook

A dicembre 2015 è stata rilasciata la nuova versione del popolare linguaggio di programmazione PHP. Siamo arrivati alla versione 7.1, facendo però uno strano salto dalla 5.x.

Tra gennaio e marzo 2016, la maggior parte dei distributori di software open source, per il debug di applicazioni PHP in locale, come EasyPHP, MAMP, sia per la scrittura di codice PHP, come Aptana, Komodo, Eclipse, Web Storm, hanno aggiornato i loro prodotti alla nuova versione 7 di PHP.

NB: Se vuoi continuare ad avere un ambiente di test, in locale sul tuo pc, aggiornato, ti consiglio di riscaricare tali software o di aggiornarli.

Il perchè la versione 6 non sia mai stata rialasciata è una lunga storia, che ha a che fare con il fatto che la versione 6 era già uscita in passato, come progetto del sito php.net, e con caratteristiche completamente diverse da quelle che si sono adottate per l'attuale versione 7, e questo avrebbe creato confusione tra gli sviluppatori, vedendo riutilizzare lo stesso nome, per una versione completamente diversa da quella pubblicizzata in passato. Inoltre sembra che ci sia una certa "maledizione" legata al numero 6, perchè anche la versione 6 di perl fu un clamoroso insuccesso.

D'altra parte il salto di numerose versione è una pratica già vista in passato per popolari software quali il database MariaDb, il browser Netscape, l'antivirus Symantec etc.

Il punto più difficile sarà ora aggiornare l'immensa mole di server web sparsi per il mondo, e la grande quantità di software che sfruttano il php, con un programma di aggiornamento progressivo che richiederà forse un anno o più. E' difficile capire l'impatto che possa avere questa nuova release, nei confronti di siti e software sviluppati in PHP, perchè molto dipende dalla complessità di questi e dall'uso o meno di librerie soggette ad aggiornamento.

Come per le precedenti versioni, per siti web che svolgono le comuni azioni CRUD (Create, Read, Update, Delete), non dovrebbero esserci radicali cambiamenti, quindi lo scopo dell'articolo è valutare quelli più significativi, che si dovranno tenere in considerazione per lo sviluppo dei nostri futuri applicativi o siti web.

Un'analisi approfondita di tutti i cambiamenti li troverai al link in fondo all' articolo.

Miglioramento delle performance

Una delle principali ragioni per affidarci a società che aggiornino quanto prima i loro server alla versione 7, è legata come sempre alle performance. A differenza delle precedenti versioni alla 7, con questa nuova versione le performance sono significativamente incrementate come puoi vedere dal grafico qui sotto, in cui viene testata la quantità di richieste al secondo in grado di essere gestite da un sito con installato wordpress.PHP7 performance

Funzioni deprecate nella 5.3.0, eliminate definitivamente

Tutte le funzioni precedentemente deprecate, sono state rimosse, quindi dovrai fare molta attenzione a eliminare definitivamente dal tuo codice, tutte le righe in cui fai uso dei tag stile ASP (<%= e %>), eliminare l'uso della funzione split(), sostituire a tutte le funzioni che iniziano con ereg_*, l'equivalente che inizia con preg_*, e infine aggiornare tutte le righe in cui si interagisce con un database, eliminando tutte le funzioni mysql_*  e sostituendole con l'equivalente estensione mysqli_*

Condizioni multiple

Quasi mai sicuramente avrai usato condizioni "default" multiple nel tuo codice switch, ma l'eventuale presenza, se prima non dava alcun errore, ora causa un errore fatale.

Operatore "spaceship" <=>

Lo scopo di questo operatore è quello di rendere più agevole il confronto a catena più conciso. Ad esempio nell'espressione seguente:

$a<=>$b

l'espressione viene valutata a -1 se $a è più piccolo di $b, 0 se $a è uguale a $b, e 1 se $a è maggiore di $b, il tutto senza scrivere complesse formule.

Operatore ??

Anche questo operatore nasce per agevolare la scrittura di certe specifiche condizioni, quando ad esempio dobbiamo verificare se uno specifico valore è impostato prima di utilizzarlo. In PHP 5 il tipico codice che potremmo scrivere è di questo tipo:

$a = isset($b) ? $b : "default";

che sappiamo equivale a dire che se $b è presente, questo viene usato e inserito nella variabile $a, altrimenti viene usato il valore "default". Con il nuovo operatore introdotto nel PHP 7 potremmo scrivere più semplicemente:

$a = $b ?? "default";

Questo è molto utile quando si devono controllare dei valori provenienti da un classico modulo web. Invece di scrivere la classica sintassi:

$nome = isset($_POST['nome']) ? $_POST['nome'] : NULL;

la quale verifica se esiste il parametro title e se è valorizzato, altimenti restituisce il valore NULL, potremmo così in modo del tutto equivalente:

$nome = $_POST['nome'] ?? NULL;

Indicazione del tipo di dati per una funzione e metodo

In PHP 7 sarà possibile specificare, come tipo di dati di una funzione o metodo, il tipo integer, float, strings e boolean. A livello predefinito il tipo di dato scalare non è restrittivo nel senso che se passiamo un valore "float", ad una funzione che richiede un intero, in automatico verrà convertito, senza generare alcun errore o avvertimento.

E' in ogni caso possibile forzare questo comportamento, aggiungendo una direttiva - declare(strict_types=1) - in cima al programma, che forza il metodo e le funzioni, a rispettare il tipo di dati richiesto in ingresso:

<?php
declare(strict_types = 1);
function maggiorazione_prezzo(int $prezzo) {
 return $prezzo*0,15;
}
$a = maggiorazione_prezzo("39");
?>

il codice genererebbe un errore fatale gestibile con try e catch, in quanto andiamo a passare alla funzione un valore stringa.

Indicazione del tipo di dati restituiti da una funzione e metodo

Così come presente in molti altri linguaggio, con il PHP 7 è ora possibile specificare il tipo di dati che una funzione o metodo è in grado di restituirere, comportandosi allo stesso modo dei parametri di una funzione o metodo. Ad esempio, il codice seguente, in presenza della direttiva sopra menzionata, produrrebbe un errore fatale gestibile con try e catch, perchè andiamo a restituire un intero invece che un dato booleano.

<?php
declare(strict_types = 1);
function controllo():bool {
  return 1;
} 
?>

Insomma alcune importanti differenze che puoi vedere per intero collegandoti direttamente al link ufficiale qui: Elenco nuovo funzionalità PHP 7

Per imparare velocemente il PHP, ti consiglio il nostro VideoCorso PHP e MySQL in 82 Video. Una full immersion 100% pratica per imparare velocemente a programmare in PHP e a progettare il backend i moderni siti web e web app.

WebStartUniversity
WebStartUniversity

Ricevi le anteprime dei nuovi corsi! Iscriviti Gratuitamente

Cliccando su Iscriviti, accetti le nostre condizioni d'uso e la politica sulla privacy

×