在PHP 7.2之前,以下代码会生成不错的Fatal Error
abstract class A {
abstract protected function meth(int $var);
}
class B extends A {
public function meth($var) {
return $var;
}
}
$b = new B;
echo $b->meth(33.3); // Fatal error: Declaration of B::meth($var) must be compatible with A::meth(int $var) in [...][...]on line [..]
但是从PHP 7.2开始,除非我在类B的33.3
中将提示$var
参数键入不同的数据类型(假设为meth
),否则它将输出float
生成我们不错的fatal error
。
class B extends A {
public function meth(float $var) { // Type hint added
return $var;
}
}
$b = new B;
echo $b->meth(33.3); //// Fatal error: Declaration of B::meth($var) must be compatible with A::meth(int $var) in [...][...]on line [..]
我的问题是:
类B
是否自动继承了类A中meth方法的类型提示(在我们的情况下为int)?如果是这样,应该是输出33
而不是33.3
吗?