loader

PHP 7.4: Cosa c’è di nuovo?

PHP 7.4, minor release di PHP 7, è stata rilasciato alla General Availability il 28 novembre 2019.

Anche se PHP 7.4 migliora significativamente le prestazioni e la leggibilità del codice, PHP 8 sarà la vera pietra miliare per le prestazioni di PHP.

Ad ogni modo, oggi analizzeremo insieme alcune delle funzionalità e delle modifiche più interessanti che ci attendiamo da PHP 7.4.

Cosa c’è di nuovo in PHP con PHP 7.4?

ARRAY_MERGE? No Grazie. Preferisco  Spread Operator nell’Espressione degli Array

Disponibile a partire da PHP 5.6, lo spacchettamento degli argomenti è una sintassi che permette di decomprimere array e Traversables in elenchi di argomenti.

Lo Spread Operator dovrebbe avere prestazioni migliori rispetto a array_merge. Questo non solo perché lo Spread Operator è una struttura del linguaggio mentre array_merge è una chiamata di funzione, ma anche perché l’ottimizzazione del tempo di compilazione può essere performante per gli array di costanti.

RFC di PHP 7.4 

Un vantaggio significativo dello Spread Operator è che supporta qualsiasi oggetto, mentre la funzione array_merge supporta solo array.

Arrow Functions 2.0 (Closures)

Immaginiamo questo esempio:

function sumElem($n){
	return ($n + $n + $n);
}
$a = [1, 2, 3, 4, 5];
$b = array_map('sumElem', $a);
print_r($b);

In PHP 7.4 diventerà:

$a = [1, 2, 3, 4, 5];
$b = array_map(fn($n) => $n + $n + $n, $a);
print_r($b);

Altra note doverosa: le funzioni anonime (closure) possono ereditare variabili definite nello scopo superiore (parent scope) grazie al costrutto di linguaggio use, la nuova versione di PHP (7.4) utilizza le variabili definite nel parent scope e le cattura implicitamente per valore.

Preloading ???

All’avvio del server, possiamo caricare in memoria un certo set di file PHP e rendere i loro contenuti “permanentemente disponibili” a tutte le richieste successive che saranno servite da quel server. Tutte le funzioni e le classi definite in questi file saranno disponibili per le richieste nativamente, esattamente come le entità interne.

Il Preloading è controllato da una specifica direttiva php.iniopcache.preload. Questa direttiva specifica uno script PHP da compilare ed eseguire all’avvio del server. 

NB: i file precaricati rimangono memorizzati nella memoria opcache per sempre. La modifica dei corrispondenti file sorgente non avrà alcun effetto senza un altro riavvio del server.

Dreprecati:

  • Backward Incompatible Changes
  • New Features
  • Changes in SAPI modules
  • Deprecated Functionality
  • Changed Functions
  • New Functions
  • New Classes and Interfaces
  • Removed Extensions and SAPIs
  • Other Changes to Extensions
  • New Global Constants
  • Changes to INI File Handling
  • Windows Support
  • Migration to pkg-config
  • Other Changes
  • Performance Improvements
PHP 7.4 UPGRADE NOTES

1. Backward Incompatible Changes
2. New Features
3. Changes in SAPI modules
4. Deprecated Functionality
5. Changed Functions
6. New Functions
7. New Classes and Interfaces
8. Removed Extensions and SAPIs
9. Other Changes to Extensions
10. New Global Constants
11. Changes to INI File Handling
12. Windows Support
13. Migration to pkg-config
14. Other Changes
15. Performance Improvements

Per maggiori informazioni : https://github.com/php/php-src/blob/PHP-7.4/UPGRADING