PHP 8.3: class_alias() создание псевдонимов встроенных классов
class_alias()
может создавать псевдоним для заданного класса. Псевдоним ведёт себя точно так же, как и оригинальный класс.Возможность создания псевдонимов классов через функцию PHP class_alias()
появилась в версии 5.3.0. Но, до PHP 8.3 попытка присвоить псевдоним встроенному классу приводила к выбрасыванию исключения ValueError
:
// Недопустимо в PHP < 8.3
class_alias('stdClass', 'MyNewClass');
class_alias('Traversable', 'NewTraversableInterface');
ValueError: class_alias(): Argument #1 ($class) must be a user-defined class name, internal class name given
Начиная с версии PHP 8.3 и выше, появилась возможность создания через функцию class_alias()
псевдонимов внутренних классов и интерфейсов. Приведённый фрагмент валиден, и class_alias()
корректно присваивает псевдонимы и внутренним классам:
// Допустимо в PHP >= 8.3
class_alias('stdClass', 'MyNewClass');
class_alias('Traversable', 'NewTraversableInterface');
Функция class_alias()
принимает в качестве третьего параметра значение bool $autoload = true
. Этот параметр не влияет на встроенные классы, так как они не нуждаются в автозагрузке. Однако, несмотря на отсутствие значимого эффекта, передача значения в этот параметр все же разрешена и не вызывает никаких предупреждений или ошибок.