## Новая функциональность

### Ядро PHP

#### Изменения Readonly

Анонимные классы теперь могут быть помечены как доступные только для чтения.

Свойства с доступом только для чтения теперь можно повторно инициализировать при клонировании.

#### Типизированные константы класса

Классы, интерфейсы, трейты и константы перечислений теперь поддерживают объявления типов.

#### Замыкания, которые создали в магических методах

Замыкания, которые создали в магических методах, теперь принимают именованные аргументы.

#### The final modifier with a method from a trait

Модификатор final теперь разрешается указывать при импорте метода трейта.

#### Атрибут Override

Добавили атрибут #[\Override], который проверяет существование метода в родительском классе или в реализуемом интерфейсе.

#### получение констант классов динамическим синтаксисом

Теперь можно получить доступ к константам классов через переменные: `C::{$name}`.

#### Инициализаторы статических переменных

Инициализаторы статических переменных теперь могут содержать произвольные выражения.

#### Синтаксис резервных значений для ini-переменных

Файл php.ini теперь поддерживает синтаксис резервных и установленных по умолчанию значений.

    <?php

    /*
    Путь /path/to/user.ini содержит следующие настройки:

    listen = localhost:${DRUPAL_FPM_PORT:-9000}
    */

    $user_ini = parse_ini_file('/path/to/user.ini');
    echo $user_ini['listen']; // localhost:9000

    ?>

### Командная строка CLI

Теперь можно проверять несколько файлов (php -l file1.php file2.php — прим. перев.).

### Модуль DOM

Добавили свойства DOMElement::$className и DOMElement::$id. Пока они не бинарно-безопасные из-за общих ограничений библиотеки libxml2. Это означает, что значения свойств будут обрезаны на NUL-байте.

Добавили свойства DOMNode::$isConnected и DOMNameSpaceNode::$isConnected.

Добавили свойства DOMNode::$parentElement и DOMNameSpaceNode::$parentElement.

### Модуль FFI

Теперь можно присваивать объекты класса FFI\CData другим объектам класса FFI\CData. Значение CData теперь может быть присвоено структурам и полям.

### Модуль Opcache

Элемент `opcache_get_status()['scripts'][n]['revalidate']` теперь содержит метку времени Unix, которая указывает, когда должна быть выполнена следующая повторная проверка метки времени скриптов, которую определяет INI-опция opcache.revalidate_freq.

### Модуль POSIX

Функция posix_getrlimit() теперь содержит необязательный параметр `$resource`, чтобы разрешить получение ограничения отдельного ресурса.

Функция posix_isatty() теперь выдаёт предупреждения о типе целых чисел, следуя обычной семантике ZPP.

Функция posix_ttyname() теперь выдаёт предупреждения о типе целых чисел, следуя обычной семантике класса ZPP, и предупреждения о значениях для недействительных целых чисел дескриптора файла.

### Потоки

Потоки теперь выдают уведомление `STREAM_NOTIFY_COMPLETED`. Раньше это не было реализовано.

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