luc*_*444 1 php oop extends interface
我试图实现一个接口两次,扩展另一个接口,但无法弄清楚为什么我得到致命错误
这是我的代码:
interface a {
public function foo();
}
interface b extends a {
public function baz(Baz $baz);
}
// This will work
class c implements b {
public function foo() {
}
public function baz(Baz $baz) {
}
}
// This will not work and result in a fatal error
class d implements b {
public function foo() {
}
public function baz(Foo $foo) {
}
}
Run Code Online (Sandbox Code Playgroud)
我收到此错误消息:
致命错误:d :: baz()的声明必须与第26行的K:\ xampp\htdocs\oop\Lec 2\index.php中的b :: baz(Baz $ baz)兼容
你的d类baz错误地实现了这个方法.接口指定它必须Baz使用typehint 接受参数,但是您使用typehint Foo- 不允许从接口更改参数类型.在类d中,修复将是:
<?php
class d implements b
{
public function foo() {}
public function baz(Baz $foo) {}
}
Run Code Online (Sandbox Code Playgroud)
函数的args由接口指定,可能不会更改.