laravel - внедрение зависимостей и контейнер IoC

Я пытаюсь обернуть голову вокруг внедрения зависимостей и контейнера IoC, и я использую свой UserController в качестве примера. Я определяю, от чего зависит UserController в своем конструкторе, а затем привязываю эти объекты к нему с помощью App :: bind (). Если я использую Input / get () фасад / метод / вещь, не использую ли я объект Request, который я только что внедрил в него? Должен ли я использовать следующий код вместо этого, теперь, когда объект Request внедрен или InInput :: get () разрешает тот же экземпляр Request? Я хотел бы использовать статические фасады, но не в том случае, если они разрешают неинъецированные объекты.

$this->request->get('email');

Внедрение зависимости

<?php
App::bind('UserController', function() {
    $controller = new UserController(
        new Response,
        App::make('request'),
        App::make('view'),
        App::make('validator'),
        App::make('hash'),
        new User
    );
    return $controller;
});

UserController

<?php
class UserController extends BaseController {

protected $response;
protected $request;
protected $validator;
protected $hasher;
protected $user;
protected $view;

public function __construct(
    Response $response,
    \Illuminate\Http\Request $request,
    \Illuminate\View\Environment $view,
    \Illuminate\Validation\Factory $validator,
    \Illuminate\Hashing\BcryptHasher $hasher,
    User $user
){
    $this->response = $response;
    $this->request = $request;
    $this->view = $view;
    $this->validator = $validator;
    $this->hasher = $hasher;
    $this->user = $user;
}

public function index()
{
    //should i use this?
    $email = Input::get('email');
    //or this?
    $email = $this->request->get('email');

    //should i use this?
    return $this->view->make('users.login');

    //or this?
    return View::make('users.login');
}