ホームページ >バックエンド開発 >PHPチュートリアル >【laravel】laravelでリポジトリパターンを使う方法(ウェアハウスモード)

【laravel】laravelでリポジトリパターンを使う方法(ウェアハウスモード)

WBOY
WBOYオリジナル
2016-06-23 13:05:111002ブラウズ

リポジトリ パターンの主なアイデアは、コントローラー内のデータ操作を分離するデータ操作プロキシ層を確立することです。これにはいくつかの利点があります。

  • データ処理ロジックを分離すると、コードの保守が容易になります
  • データ処理ロジック ビジネスロジックから分離されているため、2つのコードを個別にテストしてコードの重複を減らすことができます
  • コードエラーの可能性を低減します
  • コントローラーコードの可読性を大幅に向上させます
  • 対応するフォルダーを作成します

    app フォルダー 新しいフォルダー リポジトリを作成すると、関連するコードがこのフォルダーに配置されます。次に、このフォルダー内に新しい Interfaces フォルダーを作成して、インターフェイスを保存します。

    インターフェイスを作成します

    上記の Interfaces ディレクトリに新しいファイル UserInterface.php を作成します

    <?phpnamespace    App\Repositories\Interfaces; interface UserInterface{public function get_user($user_id);} 

    インターフェイスに対応する実装を作成します

    <?phpnamespace App\Repositories;use App\Entity\User;use  App\Repositories\Interfaces\UserInterface; class UserRepository Implements UserInterface{public function  get_user($user_id){$user = User::find($user_id);return $user;}} 

    ビジネス ロジックを定義するインターフェイスの実装は次のとおりです

    ServiceProvider でバインドします インターフェイスを定義します

    app/Providers/AppServiceProvider を開き、 register() にコードを追加します:

    <?php namespace App\Providers; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider{/** Register any application services.** @return void*/  public function register()  {  $this->app->bind('App\Repositories\Interfaces\UserInterface', 'App\Repositories\UserRepository'    );}} 

    ServiceProvider は、Laravel IOC コンテナが動的インターフェイス変更を実装する場所なので、ここでバインドします。これを使用すると、インターフェイス実装を直接使用する代わりに、ioc コンテナを使用してインターフェイスを解析します。これにより、対応する実装が自動的に検索されます。 これは、将来実装を変更する必要がある場合に、ここで変更できることを意味します。

    リポジトリの使用

    <?phpnamespace App\Http\V1_0\Controllers\Auth; use Illuminate\Http\Request;use App\Http\V1_0\Controllers\ApiController;use App\Repositories\Interfaces\UserInterface;  class LoginController extends    ApiController{   public function __construct(UserInterface $User) {  $this->User = $User;} public function qqlogin(Request $request){ $user_id=$request->id;  $user = $this->User->get_user($user_id);}} 

    依存性注入の使用はこちら

    声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。