Вышла новая версия PHP 8.2

Дата публикации: 2022-12-08
Просмотры: 931

Вышла очередная минорная версия PHP 8.2.
Как и все минорные обновления PHP поддерживает обратную совместимость.
А это означает, что вы сможете легко обновиться, ничего не меняя в своем коде.

Вышла новая версия PHP 8.2

Полный список изменения можно посмотреть тут.
Версия содержит множество новых возможностей, включая перечисления, readonly-классы, самостоятельные типы null, false и true, устаревшие динамические свойства, улучшения производительности и многое другое.

Readonly-классы

Начиная с PHP 8.2, класс может быть помечен модификатором readonly. Пометка класса как readonly добавит модификатор readonly к каждому объявленному свойству и предотвратит создание динамических свойств.
Пример:

readonly class BlogData
{
    public string $title;
    public Status $status;

    public function __construct(string $title, Status $status)
    {
        $this->title = $title;
        $this->status = $status;
    }
}

Самостоятельные типы null, false и true

В PHP 8.2 можно задавать возвращаемые типы методов как null, false и true.
Пример:

class Falsy
{
    public function alwaysFalse(): false { /* ... */ *}

    public function alwaysTrue(): true { /* ... */ *}

    public function alwaysNull(): null { /* ... */ *}
}

Новый модуль Random

В PHP 8.2 появился новый класс Random\Randomizer предоставляющий высокоуровневое API для случайности, обеспечиваемой классом Random\Engine. Теперь можно реализовывать разные алгоритмы ГСЧ, а не только Вихрь Мерсенна, который работает по умолчанию в функции rand.
Пример:

$array = [1, 2, 3, 4, 5];

$randomizer = new Randomizer();

$randomInt = $randomizer->getInt($array);

Константы в трейтах

В трейтах теперь можно задавать константы. Но для доступа надо использовать класс где этот трейт используется.
Пример:

trait Foo
{
    public const CONSTANT = 1;

    public function bar(): int
    {
        return self::CONSTANT; // Fatal error
    }
}

class Bar
{
    use Foo;
}

var_dump(Bar::CONSTANT); // 1

Динамические свойства устарели

С версии PHP 8.2 динамические свойста классов считаются устаревшими.
Пример:

class User
{
    public $name;
}

$user = new User();
$user->last_name = 'Doe'; // Deprecated notice

$user = new stdClass();
$user->last_name = 'Doe'; // Still allowed

Ссылка на источник: https://www.php.net/releases/8.2/en.php

Поделиться статьей:

Комментарии (1):

Авторизуйтесь, для того, чтобы оставить комментарий. Войти на сайт
avatar
Григорий Стерин
2022-12-08 04:49
Лично я очень ждал Readonly-классы )
Подписка на новости
Узнавайте о новых статьях первыми.
Профиль