Laravel Controllers: Dependency Injection & Controllers

Dependency Injection & Controllers

Constructor Injection

You are able to type-hint any dependencies your controller may need in its constructor.

<?php namespace App\Http\Controllers; use App\Repositories\UserRepository; class UserController extends Controller
{ /**
     * The user repository instance.
     */ protected $users; /**
     * Create a new controller instance.
     *
     * @param  UserRepository  $users
     * @return void
     */ public function __construct(UserRepository $users)
    { $this->users = $users; } }

Method Injection

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class UserController extends Controller
{ /**
     * Store a new user.
     *
     * @param  Request  $request
     * @return Response
     */ public function store(Request $request)
    { $name = $request->name; // } }

A common use-case for method injection is injecting the Illuminate\Http\Request instance into your controller methods.

Laravel Controllers: Dependency Injection & Controllers — Structure map

Clickable & Draggable!

Laravel Controllers: Dependency Injection & Controllers — Related pages: