Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

PHP 7.4, tutte le novità

PHP 7.4. Tutte le novità e le funzionalità ora deprecate della nuova versione del linguaggio di scripting server side.
PHP 7.4. Tutte le novità e le funzionalità ora deprecate della nuova versione del linguaggio di scripting server side.
Link copiato negli appunti

A fine novembre 2019 verrà rilasciata ufficialmente la versione 7.4 di PHP. Nell'aggiornamento sono presenti diverse novità che vale la pena approfondire. Scopriamo insieme quali sono.

Typed properties

Finalmente anche per le proprietà di una classe è possibile definire il tipo, confermando il lavoro che da anni si sta facendo verso un linguaggio più tipizzato. Abbiamo trattato l'argomento in un articolo ad esso dedicato: PHP 7.4 e Typed properties.

Analizziamo però un esempio:

class Book
{
    public string $title;
    public string $isbn;
    public \DateTime $publicationDate;
    public float $price;
    ..
}

Quello che succede assegnando un tipo di dato diverso da quello che ci aspettiamo per una proprietà è un Fatal error:

$book->price = 'ten dollars';
Fatal error: Uncaught TypeError: Typed property Book::$price must be float, string used..

Arrow functions

Chi utilizza Javascript avrà notato la comodità delle arrow function. Dalla release 7.4 anche PHP le prevede, con una sintassi non molto diversa da quella di Javascript:

fn($book) => $book->title;

Vediamo anche un esempio all'interno di un \array_map per capirne i vantaggi.

// PHP <= 7.3
$bookTitles = \array_map(function($book) {
    return $book->title;
}, $books);

// PHP 7.4
$bookTitle => \array_map(fn($book) => $book->title, $books);

Possiamo notare che, oltre ad aver scritto un po' meno codice, è la leggibilità che ne trae molto vantaggio.

Ricordiamoci sempre che all'interno di una arrow function è necessario utilizzare una sola istruzione e non deve mai contenere la keyword return.

Unpacking all'interno di array

Nelle precedenti versioni è stato già introdotto lo spread operator ... con cui scompattare un array ed "appiattirlo". Dalla versione 7.4 è possibile utilizzarlo anche all'interno della dichiarazione di un array. Vediamo un esempio:

$numbers = [1, 2, 3];
$moreNumbers = [4, ...$numbers, 5, 6];
array(6) {
  [0]=>
  int(4)
  [1]=>
  int(1)
  [2]=>
  int(2)
  [3]=>
  int(3)
  [4]=>
  int(5)
  [5]=>
  int(6)
}

Null Coalescing Assignment Operator

Il null coalescing assignment operator è uno shorthand che combina due check: l'isset() per verificare che una chiave all'interno dell'array esista ed un operatore ternario. Già con PHP 7.0 qualcosa era stato introdotto, con la nuova versione è stato migliorato ulteriormente.

Vediamo qualche esempio:

// PHP < 7
$book['name'] = isset($book['name']) ? $book['name'] : 'no title';

// PHP >= 7.0
$book['name']= $book['name'] ?? 'no title';

// PHP 7.4
$book['name'] ??= 'no title';

Funzionalità deprecate

Oltre alle novità che abbiamo appena introdotto, ci sono delle importanti deprecazioni che bisogna tenere a mente durante lo sviluppo.

Operatori ternari annidati senza parentesi

Per migliorare la leggibilità del codice sono stati deprecati gli operatori ternari annidati senza l';utilizzo di parentesi.

// Non OK (deprecato)
$value = $a ? $b : $c ? $d : $e;
// OK
$value = ( $a ? $b : $c ) ? $d : $e;
// OK
$value = $a ? $b : ( $c ? $d : $e );

Utilizzo di \array_key_exists() per gli oggetti

Non è una pratica molto diffusa ma si poteva utilizzare \array_key_exists() anche per verificare che una classe contenesse o meno una determinata proprietà. La versione PHP 7.4 ha deprecato questa tecnica consigliando l'utlizzo di \property_exists() o, più semplicemente, di una \isset().

Accesso alle chiavi di un array attraverso le parentesi graffe

Anche questa non è una tecnica particolarmente diffusa e consiste nell'accedere agli indici di un array tramite parentesi graffe anziché quadre. Anche in questo caso è stata deprecata.

// NON OK (deprecato)
$array{ $key };
// OK
$array[ $key ];

Ti consigliamo anche