Моя команда любит идею зависимых от конструктора зависимостей, потому что она делает снимки очень ясными при взгляде на класс. С помощью фасадов я знаю, что их можно издеваться и swap
педалей, но нужно было бы изучить каждую линию класса, чтобы выяснить, от чего это зависит! Я обнаружил, что могу найти истинный класс за фасадом, например, Form::getFacadeRoot()
.Как я могу создать зависимости от конструктора в Laravel 4?
код контроллера, который я закончил с это:
use Illuminate\Html\FormBuilder as Form;
use Illuminate\Validation\Factory as Validator;
use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage as Session;
use Illuminate\Http\Request as Input;
use Illuminate\Routing\Redirector as Redirect;
use Illuminate\View\Environment as View;
class HomeController extends BaseController {
protected $form;
protected $validator;
protected $session;
protected $input;
protected $redirect;
protected $view;
protected $layout = 'layouts.master';
protected $validationRules = array(
'name' => array('required', 'min:3'),
'email' => array('required', 'regex:/^[email protected]+\..{2,4}$/')
);
public function __construct(Form $form, Validator $validator, Session $session,
Input $input, Redirector $redirect, View $view
) {
$this->form = $form;
$this->validator = $validator;
$this->session = $session;
$this->input = $input;
$this->redirect = $redirect;
$this->view = $view;
}
...
}
Когда мой тест делает $this->client->request('Get', '/');
, оно ошибки вне:
Illuminate\Container\BindingResolutionException: Unresolvable dependency resolving [Parameter #2 [ <required> $csrfToken ]].
Я на даже близко к правильному пути здесь ? Я вроде как делаю это, когда иду, потому что не вижу большого обсуждения этой проблемы. Не стесняйтесь комментировать мою причину даже для попытки; Я мог бы быть продан на фасадах.
Спасибо!