Le nuove e migliorate funzionalità di PHP 7.2.0

Pubblicato: 2018-03-03
La nuova versione di PHP 7.2.0 include molte fantastiche aggiunte. Offre più funzionalità, nuovi miglioramenti e funzionalità migliori. Consente all'utente di scrivere codice migliore e di utilizzare diverse interessanti funzionalità del linguaggio come mai prima d'ora. In questo post, esamineremo gli aspetti più recenti introdotti nell'ultima iterazione di PHP.


L'aggiornamento offre molti nuovi miglioramenti. Viene fornito con molte funzionalità che garantiscono una migliore codifica. Le nuove funzionalità di PHP 7.2.0 includono:

  • Suggerimento per la digitazione dell'oggetto
  • Conteggio di vari oggetti non numerabili
  • Conversione di chiavi numeriche in cast/oggetto di array
  • Estensione Mcrypt rimossa
  • Argon2 nell'hash della password
  • HashContext come oggetto
  • Migliori costanti TLS a vari valori sani
  • Nuova estensione al sodio

Come sappiamo, gli sviluppatori web generalmente amano o odiano l'utilizzo del linguaggio PHP. Chiunque ami davvero usare PHP adorerà sicuramente questa nuova soluzione di codifica.

Se sei uno sviluppatore web a cui piace lavorare con PHP, continua a leggere mentre discutiamo delle nuove funzionalità più importanti dell'aggiornamento PHP 7.2.0.

Miglioramenti di base in PHP 7.2.0

Ecco alcuni dei principali miglioramenti nell'ultimo aggiornamento di PHP.

La soluzione per il bug delle proprietà dei tratti

Fino al rilascio di PHP 7.2.0, c'era un bug della proprietà dei tratti non corretto. Nell'ultimo aggiornamento, se un tratto definisce una proprietà, una classe non può definire una proprietà con lo stesso nome a meno che non sia più compatibile (stesso valore iniziale e visibilità). In caso contrario, emette un errore irreversibile.

Quindi, a differenza di PHP 7 e PHP 7.1, ora possiamo aspettarci di ricevere un errore fatale. Questo comportamento è stato corretto nel recente aggiornamento di PHP e ora funziona come indicato nella documentazione di PHP. Ora puoi fare un confronto rigoroso. Quando esegui lo script in PHP 7.2, ti verrà notificato un errore irreversibile.

Dichiarazione del tipo di reso

Il recente aggiornamento di PHP 7 aggiunge ulteriore supporto per le dichiarazioni di tipo restituito. Proprio come le dichiarazioni del tipo di argomento, questo tipo di dichiarazione indica anche il tipo del valore che è probabile che venga restituito da una funzione. Per la dichiarazione del tipo restituito, vengono offerti gli stessi tipi utilizzati per le dichiarazioni del tipo di argomento.

In PHP 7.2.0, un utente è abilitato a utilizzare la dichiarazione del tipo restituito in termini di tipo di dati oggetto.

Inoltre, la tipizzazione rigorosa ha anche un impatto sulle dichiarazioni del tipo di ritorno. Considerando la modalità debole predefinita, tutti i valori restituiti sono forzati al tipo accurato (nel caso siano diversi e non già di quel tipo). Tuttavia, in modalità avanzata, tutti i valori restituiti devono essere del tipo accurato/corretto. In caso contrario, viene ricevuto un TypeError .

Tuttavia, un metodo figlio deve corrispondere alla dichiarazione del tipo restituito con quella del metodo padre quando si esegue l'override di un metodo padre. Ma se un tipo restituito non è definito dal metodo padre, allora un metodo figlio può definirlo.

Espressioni di ritorno del generatore

Questa caratteristica di PHP si basa su una funzionalità rilasciata in PHP 5.5 chiamata funzionalità del generatore. Consente di utilizzare un'istruzione return nel generatore e di restituire l'espressione finale. Tuttavia, la restituzione per riferimento è limitata. Il valore può essere ottenuto utilizzando un nuovo metodo Generator " getReturn()" che viene utilizzato solo quando il generatore ha finito di produrre valori.

Tuttavia, la capacità di restituire chiaramente un valore finale utilizzando un generatore è sicuramente un'abilità pratica da possedere. Questo perché consente la restituzione integrale di un valore finale, da parte di un generatore, che può essere gestito in particolare da un codice cliente che esegue il generatore. In confronto, questo è molto più semplice che forzare un codice cliente a verificare prima se il valore finale viene ceduto o meno e quindi a gestire il valore in modo particolare.

Opzioni di sessione

Session_start() ora riconosce molte opzioni che sovrascrivono le varie direttive di configurazione della sessione impostate in php.ini.

Queste opzioni sono state anche ampliate per facilitare session.lazy_write, che rimane attivo per impostazione predefinita e fa in modo che PHP sovrascriva qualsiasi file di sessione con la modifica dei dati di sessione solo e read_and_close . Questa è un'opzione che è passabile solo a session_start() per confermare che i dati della sessione devono essere letti e quindi la sessione deve essere immediatamente chiusa rimanendo invariata.

Miglioramenti alla sicurezza in PHP 7.2.0

Ecco i recenti miglioramenti alla sicurezza implementati in PHP 7.2.0.

Algoritmo Argon 2 nell'hash delle password

Argon 2, il vincitore del concorso Password Hashing nel 2005, è un potente algoritmo di hashing. Argon2 sta per essere riconosciuto come lo standard Internet universale. Attualmente, l'algoritmo è considerato più conveniente e sicuro di Bcrypt, un altro algoritmo di hashing. Il nuovo Argon2 può essere utilizzato tramite la funzione – password_hash().

Mentre Bcrypt tiene conto di un solo fattore di costo, il nuovo Argon2 tiene conto dei seguenti tre fattori di costo:

  1. Un costo temporale : definisce i numeri delle iterazioni dell'algoritmo di hashing
  2. Un costo di memoria : definisce i numeri KiB che devono essere utilizzati durante l'hashing.
  3. Un fattore di parallelismo : imposta il numero di thread paralleli che verranno consumati durante l'hashing.

I fattori di costo predefiniti sono definiti dalle tre nuove costanti come segue:

  • PASSWORD_ARGON2_DEFAULT_TIME_COST
  • PASSWORD_ARGON2_DEFAULT_MEMORY_COST
  • PASSWORD_ARGON2-FILETTI-DEFAULT
Lib-sodio sostituisce Mcyrpt

Un altro importante miglioramento di PHP 7.2.0 è la rimozione della libreria crittografica Mcrypt convenzionale dal core PHP e l'aggiunta di Libsodium.

Mcrypt era considerato un software di abbandono e una restrizione alla crescita del linguaggio. Ecco perché è stato sostituito con Libsodium in PHP 7.2.0. Libsodium è una libreria di crittografia avanzata che fornisce una crittografia autentica insieme a un'efficiente crittografia a curva ellittica.

Libsodium è composto da algoritmi scelti con cura che vengono implementati da esperti di sicurezza per prevenire le vulnerabilità del canale laterale. In altre parole, Libsodium è una libreria multilingua e multipiattaforma per la decrittazione, la crittografia, l'hashing delle password, la firma e altro ancora.


Caratteristiche e funzioni deprecate

Di seguito sono elencate alcune delle funzioni e caratteristiche deprecate di PHP 7.2.0 che dovrebbero essere rimosse prima del rilascio di PHP 8.0.

Gmp_random() è considerata una funzionalità dipendente dalla piattaforma ed è probabile che venga deprecata. Verranno invece utilizzati gmp_random_rage() e gmp_random_bits() .

(unset) il cast è un'altra espressione che comunemente restituisce null ed è quindi considerata inutile.

Each() viene utilizzato per iterare su foreach() come un array, ma foreach() è preferito a causa della sua maggiore velocità.

Spl_autoload_register in PHP 5.1 ha sostituito la funzione _autoload . Ma ora è probabile che si verifichi la deprecazione quando la funzione viene rilevata durante la compilazione.

Anche mbstring .fucc_overload è stato impostato per la deprecazione.

La funzione assert() conferma l'asserzione data e intraprende azioni adeguate se c'è un risultato FALSO . L'uso di assert() con argomenti stringa sarà deprecato perché causa una vulnerabilità RCE.

La variabile $php_errormsg viene compilata nell'ambito locale mentre viene ricevuto un errore non fatale. Ma ora, con le versioni di PHP 7.2.0, verranno invece utilizzati error_clear_last e error_get_last .

È probabile che $errcontext venga deprecato poiché questa funzionalità sta causando problemi di ottimizzazione. Poiché $errcontext viene utilizzato per modificare tutti gli oggetti e i riferimenti nell'ambito corrente, questa funzionalità è poco utilizzata.

Create_function() presenta molti problemi di sicurezza. Inoltre, ha anche problemi di utilizzo della memoria e prestazioni scadenti.

Perché uno sviluppatore WordPress dovrebbe utilizzare PHP 7.2.0?

I recenti aggiornamenti a PHP apportano nuove funzionalità e misure di sicurezza migliorate. Ciò può includere fattori come la crittografia moderna, le aggiunte alle funzionalità principali e una maggiore velocità di caricamento per vari siti.

Vantaggi dell'utilizzo di PHP

PHP è un linguaggio altamente compatibile che può essere utilizzato con quasi tutti gli standard globali di database e server (ad esempio PostgreSQL, MySQL, Sybase, Oracle, Microsoft SQL Server e Informix). Offre prestazioni rapide supportate da una comunità open source.

Viene utilizzato per una varietà di scopi come la generazione di file e pagine dinamiche. PHP consente di gestire e archiviare le informazioni in un database del sito. Consente agli utenti di crittografare i dati utilizzando funzionalità di sicurezza e limita l'accesso non autorizzato ai siti Web.

PHP è utilizzato da molti siti Web rinomati come Yahoo, Facebook e Wikipedia.

Ancora più importante, l'ultimo aggiornamento di PHP 7.2.0 offre importanti miglioramenti della sicurezza, nuove interessanti funzionalità e miglioramenti delle prestazioni.

Le prestazioni di PHP 7.2.0

Secondo i benchmark di Phoenix, PHP 7.2.0 è il 13% più veloce di 7.1 e quasi il 20% più veloce di 7.0. Rispetto a PHP 2.6 (ancora utilizzato dal 40% degli utenti PHP), è quasi il 25% più veloce.

Ci sono molti test che supportano queste statistiche e risultati. Il benchmark PHP ufficiale rivela che PHP 7 è due volte più efficiente e due volte più veloce di 5.6. PHP 7 ha metà della latenza. Inoltre, altri benchmark come Kinsta suggeriscono che PHP 7 potrebbe essere fino a tre volte più veloce delle versioni precedenti.

Come discusso in precedenza, il motivo principale per il miglioramento delle prestazioni di PHP 7.2.0 è l'inclusione di funzionalità avanzate e la deprecazione delle vecchie funzioni. Questo è esattamente ciò che rende questa versione di PHP perfetta per gli utenti di WordPress. Tuttavia, gli sviluppatori devono controllare il codice e aggiornare le funzioni deprecate per assicurarsi che tutto sia compatibile.

Il supporto alla sicurezza di PHP 7.2.0

PHP 7.2.0 non offre più supporto per la sicurezza. Tuttavia, il supporto critico sarà ancora disponibile fino alla fine del 2018. La comunità PHP non offre più supporto per problemi e bug minori. La buona notizia è che l'ultimo aggiornamento di PHP 7.2.0 garantirà il corretto funzionamento degli aggiornamenti di sicurezza avanzati e il progetto sarà continuamente supportato dalla comunità PHP.

Libsodium è la funzionalità più importante e migliorata che è stata migrata dal vecchio PHP a PHP 7.2.0. Fortunatamente, Libsodium è molto facile da aggiornare.

Se prevedi di eseguire l'aggiornamento a PHP 7.2.0, assicurati che il tuo codice includa integrazione e unit test. Tali test aiuteranno a rilevare eventuali problemi relativi all'applicazione prima che appaia come un bug in un ambiente live.

In poche parole
PHP 7.2.0 è sicuramente un importante aggiornamento rispetto alle versioni precedenti come PHP 5.6. Quando aggiorni il codice da PHP 5.6 a PHP 7, potresti riscontrare alcune incompatibilità, sia nelle librerie da cui dipende il codice che nel codice stesso. Tuttavia, i vantaggi dell'adozione di PHP 7.2 ripagheranno i tuoi sforzi.

Poiché PHP 7.2 è molto più veloce delle versioni precedenti di PHP, ciò consente all'utente di offrire un servizio migliore agli utenti del proprio sito Web implementando i codici avanzati del linguaggio PHP.

Allora sei pronto per passare al nuovo PHP 7.2? Se non l'hai ancora aggiornato, è un buon momento per iniziare la transizione. È ora di controllare i codici e aggiornare i tuoi script.

Facci sapere come hai trovato le nuove funzionalità e funzioni migliorate di PHP 7.2.0 nella sezione commenti qui sotto!