PHP
laravel

Laravel 依存性の注入 コード 書き方

依存性の注入について

依存性の注入,DI,Dependency Injectionなど聞いたことある人、知らない人いると思いますが
自分なりに依存性の注入についてまとめると

・関数は独立している方が良い
・関数内でクラスを生成していたりするとクラスを編集した際にその関数の挙動が変わってしまうかもしれない

実際のソースコード

色々調べてみて依存性の注入を実装した方がいいらしい!

けど、どういうソースコードを書けばいいのかわかりませんでした。

やっと本題ですが今回はLaraveでDIを実装するソースコードを書いていきます。(備忘録ですのでわかりにくかったらごめんなさい)

DBからデータを取り出す処理を実装しようと思います。

まず、Modelを作成します。

コマンドラインで

php artisan make:model User

を実行してください。

そして、Controller内を以下のように編集します。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\User;

class UsersController extends Controller
{

  protected $user;

  public function __construct(User $$user){
    $this->user = $user;
  }

  public function index()
  {
    $users = $this->user->all();
    return view('users.index', ['users' => $users]);
  }
}

これで実装は完了です。
protectedで変数$userを宣言し、コンストラクタでその変数にモデルを代入しています。

実際にデータを取得するときはEloquentを利用するように使えます。

最後に

ざっくりした説明となりましたが、これで単体テストがしやすくなったと思います。

自分はまだ単体テストのありがたみがわかっていませんが、わかるレベルになったらまた記事にしたいです。