依存注入とコントローラ

Posted by muchag | Laravel 5.x | 2018-12-05 (水) 23:21:46


公式:コントローラ 依存注入とコントローラ

【環境】
Laravel: 5.7.15
コンストラクターインジェクション

コンストラクタにおいて依存注入を果たす。

コントローラ全体で利用する、できる。


namespace App\Http\Controllers;

use App\Repositories\UserRepository;

class UserController extends Controller
{
    /**
     * ユーザーリポジトリインスタンス
     */
    protected $users;

    /**
     * 新しいコントローラインスタンスの生成
     *
     * @param  UserRepository  $users
     * @return void
     */
    public function __construct(UserRepository $users)
    {
        $this->users = $users;
    }
}
メソッドインジェクション

アクションにおいて依存注入を果たす。

アクション(メソッド)ローカルで利用する、できる。


namespace App\Http\Controllers;

use Illuminate\Http\Request;

class UserController extends Controller
{
    /**
     * 新ユーザーの保存
     *
     * @param  Request  $request
     * @return Response
     */
    public function store(Request $request)
    {
        $name = $request->name;

        //
    }
}
暗黙の結合

delete アクションにおいて、すごい暗黙ルールがあった。

下記のようにルーティングすると


Route::delete('/task/{task}', function (Task $task) {
  $task->delete();

  return redirect('/');
});

パラメータ task.id から、該当する Task モデル(エンティティ)を
自動で取得してくるらしい。

{task}と$taskの名前が一致している場合には「暗黙の結合」という機能によって、
自動的に{task}のidを持つタスクが読み込まれ $taskに代入されます。
もし一致するidが見つからない場合は、404ページが生成されます。

beizのノート:Laravel 5.5 入門として「基本のタスクリスト」を作成する [その3](2018-11-01)
タスクのデータベースからの削除

すごいけど、ねぇ。。。

delete でなくても、反応しそう。

あ、これはコントローラの話じゃないか。

ルーティングの勉強をするときに移動。

Laravel 5.x | 2018-12-05 (水) 23:21:46 |

コメントはまだありません »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment