我有我的Laravel应用程序使用存储库模式。我也有一个叫做EloquentRepository
的抽象类,它包含基本的方法。我所有的资料库中有一个update()
方法,在这里我简单的使用ID和阵列更新模型:Laravel - 存储库模式问题
abstract class EloquentRepository {
public function update($id, array $array) {
$this->model->whereId($id)->update($array);
}
}
现在,我也有一个Server
库:
interface ServerRepository {
public function update($id, array $options);
}
class EloquentServerRepository extends EloquentRepository implements ServerRepository {
protected $model;
public function __construct(Server $model)
{
$this->model = $model;
}
}
所以,现在,我不不得不将update()
方法添加到我的EloquentServerRepository
,也不需要任何其他需要执行此操作的存储库(相当多)。
但是,有一个存储库具有更新功能,但我希望它做一些“自定义”的事情。可以说这是用户存储库:
interface UserRepository {
public function update($id, array $options, $status);
}
class EloquentUserRepository extends EloquentRepository implements UserRepository {
protected $model;
public function __construct(User $model)
{
$this->model = $model;
}
public function update($id, array $options, $status)
{
$this->model->setStatus($status);
$this->model->whereId($id)->update($options);
}
}
所以现在,我有我的用户存储库要求每个更新的状态。
但是,我得到的错误:
Declaration of EloquentUserRepository::update() should be compatible with EloquentRepository::update($id, array $array)
。
为什么这个,当然我的接口指定了声明应该是什么?