依存注入とコントローラ
公式:コントローラ 依存注入とコントローラ
【環境】
Laravel: 5.7.15
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 でなくても、反応しそう。
あ、これはコントローラの話じゃないか。
ルーティングの勉強をするときに移動。