## Nouvelles fonctionnalités

### PHP Core

#### Modification sur la lecture seule

Les classes anonymes peuvent désormais être marquées comme en lecture seule.

Les propriétés en lecture seule peuvent désormais être réinitialisées lors du clonage.

#### Constantes de classe typées

Les constantes de classe, d'interface, de trait et d'énumération prennent désormais en charge les déclarations de type.

#### Fermetures créées à partir de méthodes magiques

Les fermetures créées à partir de méthodes magiques peuvent désormais accepter des arguments nommés.

#### Le modificateur final avec une méthode d'un trait

Le modificateur final peut désormais être utilisé lors de l'utilisation d'une méthode d'un trait.

#### L'attribute Override

Ajout de l'attribut #[\Override] pour vérifier qu'une méthode existe dans une classe parente ou une interface implémentée.

#### Syntaxe de récupération de constante de classe dynamiquement

Les constantes de classe peuvent désormais être accédées dynamiquement en utilisant la syntaxe `C::{$name}`.

#### Initialisateurs de variables statiques

Les initialisateurs de variables statiques peuvent désormais contenir des expressions arbitraires.

#### Syntaxe de valeur de secours pour les variables ini

php.ini supporte désormais la syntaxe de valeur de secours/valeur par défaut.

`<?php
/*
/path/to/user.ini contient le paramètre suivant :
listen = localhost:${DRUPAL_FPM_PORT:-9000}
*/
$user_ini = parse_ini_file('/path/to/user.ini');
echo $user_ini['listen']; // localhost:9000`

### CLI

Il est désormais possible de linter plusieurs fichiers.

### DOM

Ajout des propriétés DOMElement::$className et DOMElement::$id. Ces propriétés ne sont pas binaires en ce moment en raison des limitations sous-jacentes de libxml2. Cela signifie que les valeurs des propriétés seront tronquées à un octet NUL.

Ajout des propriétés DOMNode::$isConnected et DOMNameSpaceNode::$isConnected.

Ajout des propriétés DOMNode::$parentElement et DOMNameSpaceNode::$parentElement.

### FFI

Il est désormais possible d'assigner FFI\CData à d'autres FFI\CData. Cela signifie que les CData peuvent désormais être assignés à des structures et des champs.

### Opcache

`opcache_get_status()['scripts'][n]['revalidate']` contient désormais un horodatage Unix indiquant quand la prochaine révalidation du timestamp des scripts est prévu, dictée par la directive INI opcache.revalidate_freq.

### POSIX

posix_getrlimit() prend désormais un argument optionnel `$resource` pour autoriser la récupération d'une seule limite de ressource.

posix_isatty() lance désormais des avertissements de type pour les entiers suivant la sémantique ZPP habituelle.

posix_ttyname() lance désormais des avertissements de type pour les entiers suivant la sémantique ZPP habituelle et des avertissements de valeur pour les entiers de descripteur de fichier invalides.

### Streams

Les streams peuvent désormais émettre la notification `STREAM_NOTIFY_COMPLETED`. Cela n'était pas implémenté auparavant.