laravel 中repository模式使用詳解

什麼是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註入到其中 就可以書寫邏輯以及相關編碼瞭。

到此這篇關於laravel repository模式使用的文章就介紹到這瞭,更多相關laravel repository模式內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: