Nuove funzionalità
 
  Dichiarazioni di tipi scalari
  
   Le
   dichiarazioni di tipi scalari
   sono disponibili in due versioni: coercitivo (predefinito) e rigoroso. I seguenti tipi
   per i parametri possono ora essere forzati (o coercitivo o rigoroso): stringhe
    (string), interi (int), numeri con virgola
    mobile (float), e booleani (bool). Questi
    aumentano gli altri tipi introdotti in PHP 5: nomi delle classi, interfacce,
    array e callable.
  
  
  
   Per abilitare la modalità rigorosa, una singola direttiva declare deve essere posizionata
   nella parte superiore del file. Questo significa che la severità della tipizzazione per i valori scalari è
   configurata su una base per-file. Questa direttiva interessa non solo le dichiarazioni
   di tipi di parametri, ma anche il tipo di ritorno di una funzione (vedere
   dichiarazioni dei tipi di ritorno,
   le funzioni interne di PHP, e le funzioni delle estensioni
   caricate.
  
  
   La documentazione completa e gli esempi sulle dichiarazioni dei tipi scalari si possono trovare
   nel riferimento 
   dichiarazione del
   tipo.
  
  
 
  Dichiarazioni del tipo di ritorno
  
   PHP 7 aggiunge il supporto per le 
   dichiarazioni del tipo di ritorno.
   Analogamente alle
   dichiarazioni dei tipi degli argomenti,
   le dichiarazioni del tipo di ritorno specificano il tipo del valore che sarà
   restituito da una funzione. Per le dichiarazioni del tipo di ritorno
   sono disponibili gli stessi tipi
   che sono disponibili per le dichiarazioni
   del tipo degli argomenti.
  
  
  
   La documentazione completa e gli esempi sulle dichiarazioni del tipo di ritorno si possono trovare
   nel riferimento
   le dichiarazioni
   del tipo di ritorno.
  
  
 
  Operatore null coalesce
  
   L'operatore null coalesce (??) è stato aggiunto come
   zucchero sintattico per il caso comune di dover utilizzare una ternaria in
   congiunzione con isset(). Esso restituisce il suo primo operando
   se esiste e non è null; altrimenti restituisce il suo secondo operando.
  
  
  
  
 
  L'operatore spaceship
  
   L'operatore spaceship è usato per confrontare due espressioni. Restituisce -1, 0
   o 1 quando $a è rispettivamente minore, uguale, o maggiore
   di $b. I confronti sono eseguiti secondo le consuete 
   regole di confronto dei tipi di PHP.
  
  
  
  
 
  Array costanti che usano define()
  
   Ora possono essere definiti Array costanti con
   define(). In PHP 5.6, potevano essere definiti solo con
   const.
  
  
  
 
  Classi anonime
  
   Il supporto per le classi anonime è stato aggiunto via new
   class. Queste possono essere usate al posto di definizioni di classi complete per
   oggetti usa e getta:
  
  
  
   La documentazione completa può essere trovata nel 
   riferimento delle classi anonime.
  
  
 
  Sintassi dell'escape del codepoint Unicode
  
   Questo ha come input un codepoint Unicode in una forma esadecimale, e restituisce quel
   codepoint in UTF-8 in una stringa con doppi apici oppure un heredoc. Qualsiasi codepoint
   valido è accettato, con gli iniziali 0 opzionali.
  
  
  
 
  
  
   Closure::call() è un modo più performante e abbreviato
   di effettuare un binding temporaneo dello scope di un oggetto ad una closure e di invocarla.
  
  
  
 
  
  
   Questa funzionalità cerca di fornire una miglior sicurezza quando si deserializzano oggetti su
   dati non attendibili. Previene possibili iniezioni di codice, consentendo agli
   sviluppatori di inserire nella whitelist le classi che possono essere deserializzate.
  
  
  
 
  
  
   La nuova classe IntlChar cerca di esporre funzionalità ICU
   addizionali. La classe stessa definisce un numero di metodi statici e
   costanti che possono essere usati per manipolare i caratteri unicode.
  
  
  
   Per poter utilizzare questa classe, l'estensione Intl deve essere installata.
  
  
 
  Aspettative
  
   Le aspetattive sono dei
   miglioramenti retrocompatibili alla vecchia funzione
   assert(). Permettono asserzioni a costo zero nel codice di produzione, e
   forniscono la possibilità di lanciare eccezioni personalizzate quando l'asserzione fallisce.
  
  
   Mentre la vecchia API continua ad essere mantenuta per compatibilità,
   assert() è ora un costrutto del linguaggio, consentendo al primo
   parametro di essere un'espressione piuttosto che solo una string da essere
   valutata o un valore bool da essere testato.
  
  
  
   Tutti i dettagli su questa funzione, incluso come configurarla sia in
   ambienti di sviluppo che di produzione, possono essere trovati nella
   sezione aspettative
   del riferimento assert().
  
  
 
  Raggruppare le dichiarazioni use
  
   Classi, funzioni e costanti importati dallo stesso namespace
   possono ora essere raggruppati insieme in una singola istruzione use.
  
  
  
 
  Generatore di espressioni di ritorno
  
   Questa caratteristica si basa sulle funzionalità del generatore introdotte in PHP 5.5.
   Si abilita per un'istruzione return per essere usata all'interno di un
   generatore per abilitare per una espressione final per essere restituita (il ritorno per
   referenza non è permesso). Questo valore può essere preso usando il nuovo
   metodo Generator::getReturn(), che può solo essere usato
   una volta che il generatore ha finito di effettuare lo yield dei valori.
  
  
  
   Essere in grado di restituire esplicitamente un valore final da un generatore è un'abilità
   comoda da avere. Questo perchè abilita per un valore final da essere restituito
   da un generatore (forse da qualche forma di routine di computazione) che può essere
   specificamente gestito dal codice client eseguendo il generatore. Questo è molto più
   semplice rispetto a forzare il codice del client a controllare prima che il valore
   final sia stato yieldato, e in quel caso, gestire il valore specificamente.
  
  
 
  Delegazione del generatore
  
   I generatori possono ora delegare ad un altro generatore,
   oggetti Traversable o array
   automaticamente, senza la necessita di scrivere boilerplate nel generatore
   più esterno usando il costrutto yield from.
  
  
  
 
  Divisione intera con intdiv()
  
   La nuova funzione intdiv() esegue una divisione intera
   dei suoi operandi e la restituisce.
  
  
  
 
  Opzioni di sessione
  
   session_start() ora accetta un array di
   opzioni che sovrascrivono le
   direttive di configurazione della sessione
   normalmente impostate nel php.ini.
  
  
   Queste opzioni sono state inoltre ampliate per supportare
   session.lazy_write, che è
   attivo di default e fa in modo che PHP possa solo sovrascrivere qualsiasi file di sessione se i
   dati di sessione sono cambiati, e read_and_close, che è
   un'opzione che può solo essere passata a session_start() per
   indicare che i dati di sessione dovrebbero essere letti e quindi che la sessione deve
   essere immediatamente chiusa senza cambiamenti.
  
  
   Per esempio, impostare
   session.cache_limiter a
   private e chiudere immediatamente la sessione dopo averla
   letta:
  
  
  
 
  
  
   La nuova funzione preg_replace_callback_array() abilita
   il codice per essere scritto in maniera più pulita quando si usa la funzione
   preg_replace_callback(). Prima di PHP 7,
   le callback che avevano bisogno di essere eseguite per espressioni regolari richiedevano che
   la funzione di callback venisse sporcata con un sacco di ramificazione.
  
  
   Ora, le callback possono essere registrate ad ogni espressione regolare usando un
   array associativo, dove la chiave è un'espressione regolare e il valore è una
   callback.
  
  
 
  CSPRNG Functions
  
   Due nuove funzioni sono state aggiunte per generare interi e stringhe
   crittograficamente sicuri in modo cross-platform:
   random_bytes() e random_int().
  
  
 
  
   list() può sempre spacchettare oggetti implementando
   ArrayAccess
  
  
   Precedentemente, non era garantito che list() operasse
   correttamente con gli oggetti che implementavano ArrayAccess.
   Questo è stato risolto.
  
  
 
 
  Altre Caratteristiche
  
   - 
    
     È stato aggiunto l'accesso ai membri della classe in fase di clonazione,
     per esempio (clone $foo)->bar().