在某些情况下,当您覆盖具有类型提示输入参数的方法时,如下所示:
class FooParent
{
public function bar(BazInterface $baz)
{
// ...
}
}
并且您希望允许将空值作为输入参数传递。
如果您删除接口类型提示
class Foo extends FooParent
{
public function bar($baz)
{
// ...
}
}
你会得到这样的错误:
Fatal error: Declaration of Foo::bar() must be compatible with that of FooParent::bar()
如何在不更改父类的情况下允许空值?
这是一个真实的例子,因为父类可以是第三方库或框架的一部分,所以改变它不是一种选择。