Выпущен PHP 7.4.0, этот выпуск знаменует собой четвертое обновление функций в серии PHP 7.
PHP 7.4.0 содержит множество улучшений и несколько новых функций, в том числе:
Typed Propertiesатрибут типа
Свойства класса теперь поддерживают объявления типов, в следующем примере для $User->id могут быть назначены только значения int, а для $User->name могут быть назначены только строковые значения.
<?php
class User {
public int $id;
public string $name;
}
?>
Arrow Functionsстрелочная функция
Стрелочная функция обеспечивает сокращенный синтаксис для определения функции, имея неявную привязку значения области.
<?php
$factor = 10;
$nums = array_map(fn($n) => $n * $factor, [1, 2, 3, 4]);
// $nums = array(10, 20, 30, 40);
?>
Это может быть чрезвычайно полезно при передаче замыканий таким функциям, как array_map или array_filter.
// A collection of Post objects $posts = [/* … */];
$ids = array_map(fn($post) => $post->id, $posts);
Limited Return Type Covariance and Argument Type ContravarianceКонечная ковариантность типа возвращаемого значения и контравариантность типа параметра
Полная ковариантная/контравариантная поддержка доступна только при использовании автозагрузки. В одном файле можно использовать только ссылки на ациклические типы, так как все классы должны быть доступны, прежде чем на них можно будет ссылаться.
<?php
class A {}
class B extends A {}
class Producer {
public function method(): A {}
}
class ChildProducer extends Producer {
public function method(): B {}
}
?>
Unpacking Inside Arraysупаковать внутренний массив
<?php
$parts = ['apple', 'pear'];
$fruits = ['banana', 'orange', ...$parts, 'watermelon'];
// ['banana', 'orange', 'apple', 'pear', 'watermelon'];
?>
Numeric Literal SeparatorРазделитель числового литерала
Числовые литералы могут содержать символы подчеркивания между числами.
<?php
6.674_083e-11; // float
299_792_458; // decimal
0xCAFE_F00D; // hexadecimal
0b0101_1111; // binary
?>
Weak Referencesслабая ссылка
Слабые ссылки позволяют программистам сохранять ссылку на объект, не предотвращая уничтожения объекта.
Allow Exceptions from __toString()Разрешить генерацию исключений из __toString()
Теперь разрешено вызывать исключения из __toString(), которые раньше вызывали фатальные ошибки, существующие исправимые фатальные ошибки в преобразованиях строк были преобразованы в исключения ошибок.
Opcache PreloadingПредварительная загрузка Opcache
Добавлена поддержка предварительной загрузки Opcache.
Есть также некоторые устаревшие, и некоторые расширения были удалены из ядра, см. подробности: