PHP 8.3: class_alias() 支持内置 PHP 类创建别名
class_alias
PHP 函数用于为一个类创建别名。别名类和原始类的行为完全一致。
在 PHP 8.3 之前,为内置的 PHP 类创建别名会导致 ValueError
异常:
// Not allowed in 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
也正确为内部类起了别名:
// Allowed in PHP >= 8.3
class_alias('stdClass', 'MyNewClass');
class_alias('Traversable', 'NewTraversableInterface');
class_alias()
函数也接收一个 bool $autoload = true
作为第三个参数。该参数对内置类没有影响,因为这些类不需要自动加载。不过,尽管不会产生有意义的效果,传入值到该参数仍是允许的,且不会触发任何警报或者错误。