什么是Repository模式,laravel学院中用这样一张图来解释
编码过程当中 解耦一直是个较为热门的话题。 使用MVC设计模式开发的时候,如果需要查询数据库/操作数据库的时候就得直接引用模型,调用模型。按照常规的调用方法直接以下所示,不使用Eloquent ORM就没法操作数据库,那么就是ORM和这个控制器有着非常之大的耦合性。
$position = Position::createPosition($params); $position->users()->attach($userParams); $position->permissions()->attach($permissionParams);
控制器方面应该是只有返回相关的 不会包含任何逻辑的代码,所以为了解耦我们就该引用repository设计模式。
repository 需要的开发层面
首先我们需要定义一个接口
<?php namespace App\Http\Repositories\Interfaces; use App\Http\Repositories\Interfaces\BaseRepositoryInterface; interface UserRepositoryInterface extends BaseRepositoryInterface { }
可以自己先构造一个基层的BaseInterface来封装常用并且基本的操作模型的方法,创建好接口之后开始绑定repository来进行实现该接口
<?php namespace App\Http\Permission\Repositories\Eloquent; use App\Http\Repositories\Eloquent\EloquentBaseRepository; use App\Http\Permission\Repositories\Interfaces\UserRepositoryInterface; class UserRepository extends EloquentBaseRepository implements UserRepositoryInterface { }
创建好之后需要在ServiceProvider当中注册并绑定该接口,保证与模型层有相关联。
$this->app->bind(UserRepositoryInterface::class,function (){ return new UserRepository(new User); });
绑定好之后就可以创建service之后使用构造函数来将该interface注入到其中 就可以书写逻辑以及相关编码了。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)