考虑以下代码片段:
class Foo
{
public function fooMethod()
{
return [];
}
}
class Bar extends Foo
{
public function fooMethod(): array
{
return ['something'];
}
}
这工作没有任何错误(在 PHP7.4 和 PHP7.3 中测试)。为什么 PHP 不强制子进程的方法签名与父进程相同(即没有返回类型)?PHP 允许这样做是否有正当理由,或者这是一个错误?我的猜测是,通过不在父级中声明它,我们实际上是在说它可以返回“混合”,因此任何返回类型都是有效的,但我很想知道原因。
慕尼黑的夜晚无繁华