在抽象类中输入提示

时间:2018-08-19 07:39:36

标签: php abstract-class type-hinting

在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吗?

0 个答案:

没有答案