Выпущен PHP 7.4.0

PHP
Выпущен PHP 7.4.0

Выпущен 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.

Есть также некоторые устаревшие, и некоторые расширения были удалены из ядра, см. подробности:

Категории