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

Дата публикации: 2024-11-21
Просмотры: 130

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

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

PHP 8.4 — большое обновление языка PHP.

Оно содержит множество новых возможностей, таких как хуки свойств, асимметричная область видимости свойств, обновление DOM API, улучшена производительность, исправлены ошибки и многое другое.

Хуки свойств

Хуки свойств обеспечивают поддержку вычисляемых свойств, которые могут быть понятны IDE и инструментам статического анализа, без необходимости писать DocBlock-комментарии, которые могут не совпадать. Кроме того, они позволяют выполнять надёжную предварительную или последующую обработку значений, без необходимости проверять, существует ли в классе соответствующий геттер или сеттер.

class Locale
{
    public string $languageCode;

    public string $countryCode
    {
        set (string $countryCode) {
            $this->countryCode = strtoupper($countryCode);
        }
    }

    public string $combinedCode
    {
        get => \sprintf("%s_%s", $this->languageCode, $this->countryCode);
        set (string $value) {
            [$this->countryCode, $this->languageCode] = explode('_', $value, 2);
        }
    }

    public function __construct(string $languageCode, string $countryCode)
    {
        $this->languageCode = $languageCode;
        $this->countryCode = $countryCode;
    }
}

$brazilianPortuguese = new Locale('pt', 'br');
var_dump($brazilianPortuguese->countryCode); // BR
var_dump($brazilianPortuguese->combinedCode); // pt_BR

Асимметричная область видимости свойств

Область видимости записи свойства теперь может контролироваться независимо от области видимости чтения свойства, что уменьшает необходимость использования шаблонных методов-геттеров для раскрытия значения свойства без возможности его изменения извне класса.

class PhpVersion
{
    public private(set) string $version = '8.4';

    public function increment(): void
    {
        [$major, $minor] = explode('.', $this->version);
        $minor++;
        $this->version = "{$major}.{$minor}";
    }
}

Атрибут #[\Deprecated]

Новый атрибут #[\Deprecated] расширяет существующий механизм объявления сущности устаревшей для пользовательских функций, методов и констант классов.

class PhpVersion
{
    #[\Deprecated(
        message: "use PhpVersion::getVersion() instead",
        since: "8.4",
    )]
    public function getPhpVersion(): string
    {
        return $this->getVersion();
    }

    public function getVersion(): string
    {
        return '8.4';
    }
}

Объектно-ориентированный API для BCMath

Новый объект BcMath\Number позволяет использовать объектно-ориентированный стиль и стандартные математические операторы при работе с числами произвольной точности.

Эти объекты неизменяемы и реализуют интерфейс Stringable, поэтому их можно использовать в строковых контекстах, например, echo $num.

use BcMath\Number;

$num1 = new Number('0.12345');
$num2 = new Number('2');
$result = $num1 + $num2;

echo $result; // '2.12345'
var_dump($num1 > $num2); // false

Новые функции array_*()

Добавлены функции array_find(), array_find_key(), array_any() и array_all().

$animal = array_find(
    ['dog', 'cat', 'cow', 'duck', 'goose'],
    static fn (string $value): bool => str_starts_with($value, 'c'),
);

var_dump($animal); // string(3) "cat"

new MyClass()->method() без скобок

К свойствам и методам только что инициализированного объекта теперь можно обращаться, не оборачивая выражение new в круглые скобки.

class PhpVersion
{
    public function getVersion(): string
    {
        return 'PHP 8.4';
    }
}

var_dump(new PhpVersion()->getVersion());

PHP 8.4 имеет высокую производительность, улучшенный синтаксис, надёжную систему типов. Новая реализация JIT на основе IR Framework. Добавлено множество новых функций и методов.

Обо всех изменениях можно прочитать ниже по ссылке. Ссылка на источник: https://www.php.net/releases/8.4/en.php

Предыдущая статья:

Вышла новая версия PHPStan 2.0

Следующая статья:

Вышла новая версия Symfony 7.2
Поделиться статьей:

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

Авторизуйтесь, для того, чтобы оставить комментарий. Войти на сайт
avatar
Григорий Стерин
2024-11-23 03:33
Наконец-то вышла новая версия PHP 8.4 со множеством интересных изменений
Подписка на новости
Узнавайте о новых статьях первыми.
Профиль