PHP 7.4. Tutte le novità e le funzionalità deprecate

php & mysql

A fine novembre 2019 è stata rilasciata ufficialmente la versione 7.4 di PHP. Nell’aggiornamento sono presenti diverse novità che vale la pena approfondire.

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, poiché la proposta di inclusione di JIT è già stata approvata.

Ad ogni modo, oggi analizzeremo insieme alcune delle funzionalità e delle modifiche più interessanti che ci attendiamo da PHP 7.4. Giusto per registrazione, queste sono state le date importanti che hanno portato al rilascio di PHP 7.4::

  • 6 giugno: PHP 7.4 Alpha 1
  • 18 luglio: PHP 7.4 Beta 1 – Congelamento delle funzionalità
  • 28 novembre: rilascio di PHP 7.4 per la GA

Potete trovare l’elenco completo delle funzionalità e delle novità nella pagina ufficiale della RFC.

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.

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 ];

Articoli recenti

Commenti recenti

  1. Massimiliano Ferretti su I Commenti

    Mi permetto di aggiungere una mia considerazione personale che ho riportato dall'utilizzo di C#. Personalmente mi piace commentare funzioni e…

  2. Personalmente ritengo che utilizzare git porti sempre dei vantaggi anche per lo sviluppo solo. Già solo la possibilità di fare…

  3. ciao, il link a discord non è piu valido, vorrei utilizzare il materiale che hai pubblicato tempo fa, come faccio?

Itamde è anche una scuola di programmazione online.

Itamde

Impara ciò che desideri, al tuo ritmo

0 commenti

Invia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Potrebbe interessarti anche…

Le novità di Itamde Studio – Ottobre 2025

Le novità di Itamde Studio – Ottobre 2025

Tra creazioni, libri e un po’ di magia artigianale L’autunno è arrivato e Itamde Studio prosegue la sua stagione creativa con la consueta energia poliedrica: tra scrittura, web, video, artigianato e nuovi progetti in vista dei mercatini di fine anno. Questo mese di...

Rimani aggiornato sulle ultime notizie e novità

Accedi ai contenuti riservati

Scopri il dietro le quinte dei nostri progetti, risorse esclusive e lo stato di avanzamento delle nostre creazioni in tempo reale.

Iscriviti alla newsletter

Ricevi le nostre notizie, le nostre riflessioni creative e le novità dell’atelier direttamente nella tua casella di posta elettronica.

Seguici

Unisciti alla nostra community sui social network per seguire i nostri progetti quotidiani e interagire con noi.