Новые возможности
Новый тип object
Был введен новый тип, object, который может использоваться в передаваемых параметрах (контравариантность) и возвращаемых значениях (ковариантность) для любых объектов.
<?php
function test(object $obj) : object
{
return new SplQueue();
}
test(new StdClass());
Загрузка модуля по имени
Для подгружаемых модулей больше не требуется указание расширения файла
(.so
для Unix или .dll
для Windows).
Это допускается в файле php.ini, а также в функции dl().
Разрешено переопределение абстрактных методов
Абстрактные методы теперь можно переопределить, в случаях когда абстрактный класс наследуется от другого абстрактного класса.
<?php
abstract class A
{
abstract function test(string $s);
}
abstract class B extends A
{
// переопределён - всё ещё сохраняя контравариантность для параметров и ковариантность для возвращаемых значений
abstract function test($s) : int;
}
Sodium теперь является основным модулем
Современная криптографическая библиотека Sodium теперь стала основным модулем в PHP (как модуль sodium).
Смотрите раздел Sodium для получения полной информации.
Добавлено хеширование пароля с помощью Argon2
Был добавлен алгоритм Argon2 в API хеширования пароля, где доступны следующие константы:
-
PASSWORD_ARGON2I
-
PASSWORD_ARGON2_DEFAULT_MEMORY_COST
-
PASSWORD_ARGON2_DEFAULT_TIME_COST
-
PASSWORD_ARGON2_DEFAULT_THREADS
Расширенные типы строк для PDO
Тип строки PDO был расширен для поддержки национальных наборов символов при эмуляции подготавливаемых запросов. Добавлены новые константы:
-
PDO::PARAM_STR_NATL
-
PDO::PARAM_STR_CHAR
-
PDO::ATTR_DEFAULT_STR_PARAM
Эти константы используется в побитовом OR
с константой PDO::PARAM_STR
:
<?php
$db->quote('über', PDO::PARAM_STR | PDO::PARAM_STR_NATL);
Дополнительная отладочная информация при эмуляции подготавливаемых запросов в PDO
Метод PDOStatement::debugDumpParams() был обновлён, чтобы включить SQL до отправки в БД, где будет показан полный необработанный запрос (включая заменённые параметры с их связанными значениями). Это было добавлено для помощи в отладке эмуляции подготавливаемых запросов (и поэтому это будет доступно только при включенной эмуляции подготавливаемых запросов).
Поддержка расширенных операций в LDAP
Была добавлена поддержка EXOP в модуль LDAP. Стали доступны следующие функции и константы:
- ldap_parse_exop()
- ldap_exop()
- ldap_exop_passwd()
- ldap_exop_whoami()
-
LDAP_EXOP_START_TLS
-
LDAP_EXOP_MODIFY_PASSWD
-
LDAP_EXOP_REFRESH
-
LDAP_EXOP_WHO_AM_I
-
LDAP_EXOP_TURN
Информация об адресе в модуле сокетов
Модуль сокетов теперь имеет возможность искать адресную информацию, а также подключаться к ней, связываться с ней и объяснять её. Для этого были добавлены следующие четыре функции:
Расширение типа параметра
Типы параметров из переопределённых методов и реализаций интерфейсов теперь могут быть опущены. Это всё ещё соответствует LSP, так как параметры типов контравариантны.
<?php
interface A
{
public function Test(array $input);
}
class B implements A
{
public function Test($input){} // тип параметра не указан $input
}
Разрешена завершающая запятая для сгруппированных пространств имён
Завершающая запятая теперь может быть добавлена в синтаксис группировки use, появившегося в PHP 7.0.
<?php
use Foo\Bar\{
Foo,
Bar,
Baz,
};
Поддержка proc_nice() для Windows
Функция proc_nice() теперь поддерживается в Windows.
Поддержка порядка байт в pack() и unpack()
Функции pack() и unpack() теперь поддерживают типы float и double как в прямом, так и в обратном порядке байт.
Улучшения в модуле EXIF
Модуль EXIF обновлен для поддержки большего числа форматов. Это означает, что специфичные теги правильно обрабатываются при разборе изображений функцией exif_read_data(). Новые поддерживаемые форматы:
- Samsung
- DJI
- Panasonic
- Sony
- Pentax
- Minolta
- Sigma/Foveon
- AGFA
- Kyocera
- Ricoh
- Epson
Функции exif_read_data() и exif_thumbnail() теперь принимают потоки в качестве своих первых аргументов.
Новый функционал в PCRE
-
Добавлен модификатор
J
для установки PCRE_DUPNAMES.
SQLite3 позволяет записывать BLOB
Теперь SQLite3::openBlob() умеет открывать поля типа BLOB для записи. Раньше для таких полей было доступно только чтение.
Обратные вызовы Oracle OCI8 Transparent Application Failover
Добавлена поддержка обратных вызовов Oracle Database Transparent Application Failover (TAF). TAF позволяет приложеням PHP OCI8 автоматически переподключаться к предварительно сконфигурированной базе данных при нарушении соединения. Новая поддержка обратного вызова TAF позволяет приложениям отслеживать и контролировать переподключение во время восстановления.
Улучшения в расширении ZIP
Добавлена поддержка чтения и записи зашифрованных архивов (требуется libzip 1.2.0).
Класс ZipArchive теперь реализует интерфейс Countable.
Поток zip://
теперь принимает контекстную опцию 'password'
.