Опубликовано:
PHP 8.3: class_alias() поддерживает псевдонимы встроенных PHP-классов
PHP-функция
class_alias()
создаёт псевдоним для заданного класса. Псевдоним ведёт себя точно так же, как и оригинальный класс.До версии PHP 8.3 попытка присвоить псевдоним встроенному классу PHP приводила к исключению 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()
корректно присваивает псевдонимы и внутренним классам:
// Допустимо в PHP >= 8.3
class_alias('stdClass', 'MyNewClass');
class_alias('Traversable', 'NewTraversableInterface');
Функция class_alias() принимает в качестве третьего параметра значение bool $autoload = true
. Этот параметр не влияет на встроенные классы, так как они не нуждаются в автозагрузке. Однако, несмотря на отсутствие значимого эффекта, передача значения в этот параметр все же разрешена и не вызывает никаких предупреждений или ошибок.