Вышла новая версия PHP 8.3
Вышла очередная минорная версия PHP 8.3.
Как и все минорные обновления PHP поддерживает обратную совместимость.
А это означает, что вы сможете легко обновиться, ничего не меняя в своем коде.
Полный список изменения можно посмотреть тут.
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