小编kul*_*hch的帖子

为什么方法声明不兼容?

为什么我会收到此错误:

Fatal error: Declaration of ConcreteFooMapper::load() must be compatible with that of AbstractFooMapper::load() on line 18
Run Code Online (Sandbox Code Playgroud)

从这个代码:

<?php
interface Foo {
    public function foo();
}

class ConcreteFoo implements Foo {
    public function foo() {

    }
}

abstract class AbstractFooMapper {
    abstract public function load(Foo $entity, array $data);
}

class ConcreteFooMapper extends AbstractFooMapper {
    public function load(ConcreteFoo $entity, array $data) {

    }
}
?>
Run Code Online (Sandbox Code Playgroud)

我最初的想法是这是一个错误;PHP在评估方法声明时没有检测到ConcreteFoo实现了Foo。我认为这是因为当您运行此代码时:

<?php
interface Foo {
    public function foo();
}

class ConcreteFoo implements Foo …
Run Code Online (Sandbox Code Playgroud)

php oop inheritance

5
推荐指数
2
解决办法
4289
查看次数

标签 统计

inheritance ×1

oop ×1

php ×1