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
RFC di PHP 7.4array_merge
. Questo non solo perché lo Spread Operator è una struttura del linguaggio mentrearray_merge
è una chiamata di funzione, ma anche perché l’ottimizzazione del tempo di compilazione può essere performante per gli array di costanti.
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.ini
: opcache.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