在PHP 8版本中,在子类中重写父类方法时,任何数量的参数都可以被替换成可变参数,只要对应参数类型是兼容的即可。
例如以下代码:
运行程序输出结果如下:
array(1) { [0]=> string(28) "重写方法时替换成可变参数!" }
补充:
抽象类和类的不同之处。
抽象类是类的一种,通过在类的前面增加关键字abstract来表示。抽象类是仅仅用来继承的类。通过abstract关键字声明,就是告诉PHP,这个类不再用于生成类的实例,仅仅是用来被其子类继承。可以说抽象类只关注于类的继承。抽象方法就是在方法前面添加关键字abstract声明的方法。抽象类中可以包含抽象方法。一个类中只要有一个方法通过关键字abstract声明为抽象方法,则整个类都要声明为抽象类。然而,特定的某个类即便不包含抽象方法,也可以通过abstract声明为抽象类。
PHP 8中获取对象类名的新办法。
PHP 8中可以使用$object::class获取对象的类名,其返回结果和get_class($object)一样。例如:
declare(strict_types=1);
class MyTest {
}
$mytest = new MyTest ();
var_dump($mytest::class);
var_dump(get_class($mytest));
exit;