Предварительная загрузка
Предварительная загрузка — замечательное дополнение к ядру PHP, которое может привести к значительному повышению производительности. Вкратце: если вы используете фреймворк сегодня, вы должны загружать и перекомпилировать его файлы при каждом запросе. Предварительная загрузка позволяет серверу загружать файлы PHP в память при запуске и делать их постоянно доступными для всех последующих запросов. Прирост производительности, конечно, имеет свою цену: если источник предварительно загруженных файлов изменится, сервер придется перезапустить.
установить сильную типизацию
Типы переменных класса могут быть объявлены заранее:
class A
{
public string $name;
public Foo $foo;
}
Обновление 07-01: на данный момент атрибут type был объединен, поэтому подтвержден PHP 7.4.
Улучшить различие типов
Я уже писал о системе типов PHP в прошлом, поэтому приятно видеть, что некоторые улучшения на самом деле лежат в основе PHP. Различия типов — это тема, достойная отдельного поста в блоге; короче говоря: вы сможете использовать ковариантные возвращаемые типы...
class ParentType {}
class ChildType extends ParentType {}
class A
{
public function covariantReturnTypes(): ParentType
{ /* … */ }
}
class B extends A
{
public function covariantReturnTypes(): ChildType
{ /* … */ }
}
и параметры обратного вызова
class A
{
public function contraVariantArguments(ChildType $type)
{ /* … */ }
}
class B extends A
{
public function contraVariantArguments(ParentType $type)
{ /* … */ }
}
Обновление 14-01: RFC в настоящее время находится на стадии голосования, но похоже, что оно пройдет без проблем.
интерфейс внешней функции
Интерфейс внешних функций, или сокращенно FFI, позволяет вызывать код C из пользовательского пространства. Это означает, что расширения PHP могут быть написаны на чистом PHP. Следует отметить, что это сложная тема. Вам по-прежнему необходимы знания C, чтобы правильно использовать эту функцию.
Оператор присваивания нулевого слияния
вместо этого:
$data['date'] = $data['date'] ?? new DateTime();
Ты можешь это сделать:
$data['date'] ??= new DateTime();
Обновление 22-01: эта функция теперь объединена в PHP 7.4.
получить больше прибыли
Технически это не обновление, связанное с PHP 7.4, но о нем определенно стоит упомянуть. Правила голосования по RFC изменились: для их принятия всегда требуется большинство в 2/3.
Отраженные ссылки
Библиотеки, такие как var dumper Symfony, в значительной степени полагаются на API отражения для надежного дампа переменных. Раньше не было надлежащей поддержки отражения для ссылок, из-за чего эти библиотеки полагались на хаки для обнаружения ссылок. В PHP 7.4 для решения этой проблемы добавлен класс ReflectionReference. Обновление 02-14: принят RFC, подтверждены изменения для PHP 7.4.
mb_str_split
Добавление
Эта функция обеспечивает ту же функциональность, что и str_split, но для многобайтовых строк.
ext-hash
всегда включен
Как следует из названия, это расширение теперь постоянно доступно во всех версиях PHP.
PEAR не включен по умолчанию
Поскольку PEAR больше не поддерживается, основная команда решила удалить его установку по умолчанию с PHP 7.4.
Реестр хэшей паролей
Внесены внутренние изменения в то, как используются библиотеки хеширования, чтобы пользователям было проще их использовать.
устарелext/wwdx
Этот формат обмена данными никогда не был стандартизирован, и его расширение теперь устарело.
Обратно несовместимые изменения
Вы всегда должны проверять полную документацию по ОБНОВЛЕНИЮ при обновлении версии PHP. Вот некоторые выделенные обратно несовместимые изменения:
- ссылается в классе без родителя
parent ::
будет генерировать ошибки времени компиляции вместо ошибок времени выполнения. - существует
DateTime
илиDateTimeImmutable
вызов по инстанцииvar_dump
Больше не будет оставлять доступные свойства на объекте. -
openssl_random_pseudo_bytes
Исключение будет выдано в условиях ошибки. - попробуй сериализовать
PDO
илиPDOStatement
экземпляр будет генерировать исключение вместоPDOException
. - существует
ArrayObject
вызов по инстанцииget_object_vars()
вернусьArrayObject
Само свойство, а не значение массива или объекта-оболочки. Пожалуйста, обрати внимание,(array)
Принуждение не затрагивается.
Подождите минутку......
Если вы видели конец статьи, возможно, вас интересует PHP. Может быть, вы также заинтересованы в чтении других моих материалов? Вот некоторые из того, что я написал. Мой блог:iacblogМой публичный номер: php_open