Новые возможности PHP 8.3
Официальная документация: релиз PHP 8.3
1. Типизированные константы классов
Константы классов теперь могут иметь объявление типа.
class User {
const string ROLE = 'admin';
}
2. Динамическое получение констант класса
Упрощённый синтаксис для динамического обращения к константам класса.
$searchable = 'ROLE';
echo User::{$searchable};
3. Атрибут #[Override]
Гарантирует, что метод с таким же именем существует в родительском классе или интерфейсе. Помогает отлавливать опечатки при рефакторинге.
class ParentClass {
public function sayHello() {}
}
class ChildClass extends ParentClass {
#[Override]
public function sayHello() {} // OK
}
4. Глубокое клонирование readonly-свойств
Позволяет однократно модифицировать readonly-свойства внутри магического метода __clone().
readonly class User {
public function __construct(public DateTime $date) {}
public function __clone() {
$this->date = clone $this->date; // Допустимо в 8.3
}
}
5. Функция json_validate()
Проверяет, является ли строка валидным JSON, без декодирования (использует меньше памяти).
if (json_validate($jsonString)) {
// строка содержит валидный JSON
}
6. Улучшения Randomizer
- Новый метод
Randomizer::getBytesFromString() - Новый метод
Randomizer::getFloat() - Новый метод
Randomizer::nextFloat()