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

Дата публикации: 2023-11-22
Просмотры: 388

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

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

Полный список изменения можно посмотреть тут.
PHP 8.3 — большое обновление языка PHP.
Версия содержит множество новых возможностей, таких как явная типизация констант классов, глубокое клонирование readonly-свойств, а также улучшения класса Randomizer. Как всегда, в нём также улучшена производительность, исправлены ошибки и многое другое.

Типизированные константы классов

Начиная с PHP 8.3, константы могут иметь тип. Это позволит уменьшить окличество ошибок.
Пример:

// правильно
interface I {
    const string PHP = 'PHP 8.3';
}

// ошибочно
class Foo implements I {
    const string PHP = [];
}

Новый атрибут #[\Override]

Если добавить методу атрибут #[\Override], то PHP убедится, что метод с таким же именем существует в родительском классе или в реализованном интерфейсе. Добавление атрибута даёт понять, что переопределение родительского метода является намеренным, а также упрощает рефакторинг, поскольку удаление переопределённого родительского метода будет обнаружено.
Пример:

use PHPUnit\Framework\TestCase;

final class MyTest extends TestCase {
    protected $logFile;

    protected function setUp(): void {
        $this->logFile = fopen('/tmp/logfile', 'w');
    }

    #[\Override]
    protected function taerDown(): void {
        fclose($this->logFile);
        unlink('/tmp/logfile');
    }
}

// Будет ошибка, так как в классе `TestCase` нет метода `taerDown`

Глубокое клонирование readonly-свойств

Свойства, доступные только для чтения readonly теперь могут быть изменены один раз с помощью магического метода __clone для обеспечения возможности глубокого клонирования readonly-свойств.

class PHP {
    public string $version = '8.2';
}

readonly class Foo {
    public function __construct(
        public PHP $php
    ) {}

    public function __clone(): void {
        $this->php = clone $this->php;
    }
}

$instance = new Foo(new PHP());
$cloned = clone $instance;

$cloned->php->version = '8.3';

Новая функция json_validate()

Функция json_validate() позволяет проверить, является ли строка синтаксически корректным JSON, при этом она более эффективна, чем функция json_decode().

var_dump(json_validate('{ "test": { "foo": "bar" } }')); // true

PHP 8.3 имеет высокую производительность, улучшенный синтаксис, надёжную систему типов.
Обо всех изменениях можно прочитать ниже по ссылке.
Ссылка на источник: https://www.php.net/releases/8.3/en.php

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

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

Авторизуйтесь, для того, чтобы оставить комментарий. Войти на сайт
avatar
Григорий Стерин
2023-12-04 02:00
Наконец-то вышла новая долгожданная версия PHP
Подписка на новости
Узнавайте о новых статьях первыми.
Профиль