相关疑难解决方法(0)

Laravel:依赖注入与Facades?

什么,我之前已经做是注射使用构造只有我的模型,并使用外墙为Laravel的提供的类,即Session,Auth,Validator等等,例如.如果我通过构造注入每个类(我的或Laravel的)并通过$this->..语法使用它或者我应该使用构造函数注入我自己的类并使用Facade来完成Laravel提供的任何事情,这是一个好主意吗?

更具体地说,这是我的控制器通常的样子:

class MyController extends BaseController 
{
    public function __construct( User $user, Bookmark $bookmark ) {
        $this->user = $user;
        $this->bookmark = $bookmark
    }

    public function foobar ( ) {
        $user_id = Input::get('bar');
        ...
        Session::get('someInfo');
        ...
        return Redirect::to('/');
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

我应该像控制器那样构建我的方法,而不是吗?

class MyController extends BaseController 
{
    public function __construct( User $user, Bookmark $bookmark, Input $input, Session $session, Redirect $redirect ) …
Run Code Online (Sandbox Code Playgroud)

php laravel laravel-facade

8
推荐指数
1
解决办法
1677
查看次数

laravel - 依赖注入和IoC容器

我试图围绕依赖注入和IoC容器,我正在使用我的UserController作为示例.我正在定义UserController在其构造函数中所依赖的内容,然后使用App :: bind()将这些对象绑定到它.如果我正在使用Input :: get()facade/method/thing我没有利用我刚刚注入的Request对象?我是否应该使用以下代码,现在注入Request对象或者doInput :: get()解析为同一个Request实例?我想使用静态外墙,但如果他们决定解除未注入的物体,则不会.

$this->request->get('email');
Run Code Online (Sandbox Code Playgroud)

依赖注入

<?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;
});
Run Code Online (Sandbox Code Playgroud)

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 …
Run Code Online (Sandbox Code Playgroud)

php dependency-injection inversion-of-control laravel

4
推荐指数
1
解决办法
4221
查看次数