ホームページ >バックエンド開発 >PHPチュートリアル >【laravel】laravelでリポジトリパターンを使う方法(ウェアハウスモード)
リポジトリ パターンの主なアイデアは、コントローラー内のデータ操作を分離するデータ操作プロキシ層を確立することです。これにはいくつかの利点があります。
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;}}
ビジネス ロジックを定義するインターフェイスの実装は次のとおりです
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);}}
依存性注入の使用はこちら