Рубрики
Uncategorized

Грядет PHP 7.4

Автор оригинала: David Wong.

Предварительная загрузка Предварительная загрузка является удивительным дополнением к ядру PHP и может привести к некоторым значительным улучшениям производительности. Короче говоря: если вы используете фреймворк сегодня, вы должны загружать и перекомпилировать его файлы по каждому запросу. Предварительная загрузка позволяет серверам загружать PHP-файлы в память при запуске и делать их постоянно доступными для всех последующих запросов. За повышение производительности, безусловно, приходится платить: если источник предварительно загруженного файла изменяется, сервер необходимо перезапустить. Установка сильных типов Типы переменных класса могут быть объявлены заранее:

class A
{
    public string $name;
    
    public Foo $foo;
}

Обновление кода копирования 07-01: До сих пор атрибуты типа были объединены, поэтому 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
    { /* … */ }
}
Copy code and callback parameters
class A
{
    public function contraVariantArguments(ChildType $type)
    { /* … */ }
}

class B extends A
{
    public function contraVariantArguments(ParentType $type)
    { /* … */ }
}

Обновление 14-01: RFC в настоящее время находится на стадии голосования, но, похоже, оно пройдет без проблем.

Интерфейс внешних функций Интерфейс внешних функций (FFI) позволяет вызывать код C из области пользователя. Это означает, что расширения PHP могут быть написаны на чистом PHP. Следует отметить, что это сложная тема. Вам все еще нужны знания языка Си, чтобы правильно использовать эту функцию. Оператор назначения пространственного слияния Вместо этого: $data[‘дата’] = $data[‘дата’] ?? новое время(); Скопируйте код, и вы можете сделать это: $data[‘дата’] Время(); Скопируйте обновление кода 22-01: Эта функция теперь объединена в PHP 7.4. Получайте больше прибыли Технически, это не обновление, связанное с PHP 7.4, но об этом определенно стоит упомянуть. Правила голосования RFC изменились: для их принятия всегда требуется большинство в две трети голосов. Библиотеки ссылок на отражение, такие как дампер var Symfony, в значительной степени полагаются на отражение AP I для надежного сброса переменных. Ранее не было надлежащей поддержки отражения ссылок, в результате чего эти библиотеки полагались на взлом для обнаружения ссылок. PHP 7.4 добавляет класс ReflectionReference

Ссылка на родителя:: в классах без родителей приведет к ошибкам во время компиляции, а не к ошибкам во время выполнения. Вызов var_dump для экземпляра DateTime или неизменяемого экземпляра DateTime больше не оставит доступного свойства для объекта. Openssl_random_pseudo_bytes создает исключение в случае ошибки. Попытки сериализации экземпляров PDO или PDOStatement будут генерировать исключения, а не исключения PDO. Вызов get_object_vars() для экземпляра объекта массива возвращает свойства самого объекта массива, а не перенос значений массива или объекта. Обратите внимание, что приведение (массива) не влияет.