## Neue Features

### PHP-Kern

#### Ergänzungen beim Schreibschutz (Readonly)

Anonyme Klassen können nun als readonly markiert werden.

Readonly-Eigenschaften können nun beim Klonen reinitialisiert werden.

#### Typisierte Klassenkonstanten

Klassen-, Interface-, Trait- und Enum-Konstanten können nun typisiert deklariert werden.

#### Von magischen Methoden erzeugte Closures

Von magischen Methoden erzeugte Closures können nun benannte Argumente akzeptieren.

#### Der Modifikator final bei einer Methode aus einem Trait

Wenn eine Methode aus einem Trait verwendet wird, kann sie nun als final gekennzeichnet werden.

#### Das Attribut Override

Das Attribut #[\Override] wurde hinzugefügt, damit überprüft wird, ob eine Methode in einer übergeordneten Klasse oder einer implementierten Schnittstelle existiert.

#### Syntax für das dynamische Abrufen von Klassenkonstanten

Mit der Syntax `C::{$name}` kann nun dynamisch auf Klassenkonstanten zugegriffen werden.

#### Initialisierung statischer Variablen

Für die Initialisierung statischer Variablen können nun beliebige Ausdrücke verwendet werden.

#### Syntax für Fallback-Werte bei ini-Variablen

In der php.ini wird nun die Syntax für Fallback-/Standardwerte unterstützt.

`<?php
/*
Angenommen, die Datei /pfad/zu/user.ini enthält die folgenden Einstellungen:
listen = localhost:${DRUPAL_FPM_PORT:-9000}
*/
$user_ini = parse_ini_file('/pfad/zu/user.ini');
echo $user_ini['listen']; // localhost:9000`

### CLI

Die Überprüfung der Syntax (Lint) kann nun bei mehreren Dateien gleichzeitig durchgeführt werden.

### DOM

Die Eigenschaften DOMElement::$className und DOMElement::$id wurden hinzugefügt. Diese sind im Moment wegen der Einschränkungen der zugrundeliegenden libxml2 nicht binärsicher. Das bedeutet, dass die Werte der Eigenschaften an einem NUL-Byte abgeschnitten werden.

Die Eigenschaften DOMNode::$isConnected und DOMNameSpaceNode::$isConnected wurden hinzugefügt.

Die Eigenschaften DOMNode::$parentElement und DOMNameSpaceNode::$parentElement wurden hinzugefügt.

### FFI

Es ist nun möglich, FFI\CData anderen FFI\CData zuzuweisen. Das bedeutet, dass CData nun Strukturen und Feldern zugewiesen werden kann.

### Opcache

`opcache_get_status()['scripts'][n]['revalidate']` enthält nun einen Unix-Zeitstempel, der angibt, wann das Skript das nächste Mal revalidiert werden muss. Dies wird durch die INI-Direktive opcache.revalidate_freq festgelegt.

### POSIX

posix_getrlimit() akzeptiert nun einen optionalen `$resource`-Parameter, um ein einzelnes Ressourcenlimit abrufen zu können.

posix_isatty() folgt nun der normalen Semantik der Parameterauswertung (ZPP) und gibt eine Typ-Warnung für Integer-Werte aus.

posix_ttyname() folgt nun der normalen Semantik der Parameterauswertung (ZPP) und gibt eine Typ-Warnung für Integer-Werte aus. Darüber hinaus wird nun für Integer-Werte ungültiger Dateideskriptoren eine Wert-Warnung ausgegeben.

### Streams

Streams können nun die Benachrichtigung `STREAM_NOTIFY_COMPLETED` senden. Dies war bisher nicht implementiert.

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open