总之我有
abstract class AbstractMapper implements MapperInterface {
public function fetch(EntityInterface $entity, Array $conditions = array()) {
. . .
}
}
interface MapperInterface {
public function fetch(EntityInterface $entity, Array $conditions = array());
}
abstract class AbstractUserMapper extends AbstractMapper implements UserMapperInterface {
public function fetch(UserInterface $user, Array $conditions = array()) {
$conditions = array_merge($conditions, array('type' => $user->getType()));
return parent::fetch($user, $conditions);
}
}
interface UserMapperInterface {
public function fetch(UserInterface $user, Array $conditions = array());
}
这是我的错误:
致命错误:型号\ DATA \映射器的宣言\ AbstractUserMapper :: fetch()方法必须与型号\ DATA \映射器\接口\ MapperInterface的::获取兼容()
如果我改变UserInterface
到EntityInterface
它的工作原理,但它只是似乎是错误的,并在我的AbstractUserMapper::fetch()
当我输入$user
我的IDE只显示在我的声明的方法EntityInterface
和getType()
不在该列表。
我知道我还可以把$user->getType()
因为我知道我有对象实现UserInterface
但是这一切似乎只是错误的,甚至我的IDE是这样认为的还是我失去了一些东西?
为什么这个不行? 它是搞乱我的代码,如果我必须把EntityInterface
代替' UserInterface
我想。