私のチームは、コンストラクターによって注入された依存関係のアイデアを気に入っています。これは、クラスを見るときに deps が非常に明確になるためです。ファサードを使用すると、それらを嘲笑したりswap
ペディングしたりできることはわかっていますが、クラスのすべての行を調べて、それが何に依存しているかを把握する必要があります! たとえば、ファサードの背後にある真のクラスを見つけることができることを発見しましたForm::getFacadeRoot()
。
私が最終的に得たコントローラーコードは次のとおりです。
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:/^.+@.+\..{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 ]].
私はここで正しい道に近づいていますか?この問題についてはあまり議論されていないので、私はこれを作りながら考えています。試してみる理由について、気軽にコメントしてください。私はまだファサードで販売される可能性があります。
ありがとう !