Laravel 中的简单自动依赖注入

Simple automatic dependency injection in Laravel

我知道控制器中的 Laravel 可以自动解析方法:

//A
class ScriptsController extends Controller {

    public function __construct(Script $scripts){  // Script automatically injected
        $this->scripts = $scripts;
    }

    public function store(Request $request, $id){   // Request automatically injected
        // do something 
    }
}

我只是想用任何 class 或方法做同样的事情。

 // B1
 class MyClass extends Controller {

    public function __construct(Bar $bar){  // Bar to be automatically injected
        $this->bar = $bar;
    }

    public function doSomething(Foo $foo, $id){   // Foo to be automatically injected
        $foo->do(); 
    }
}

然后去别的地方

// B2
$class  = new MyClass();    // without an error
$class2 = new MyClass();
$class2->doSomething();    // ditto 

tutorials about this 但他们不是直接回答这个问题,而是倾向于对服务提供商的工作方式等进行详细解释。

是否有一种简单的方法可以在某处添加一行(可能是 Bind?)让容器解析依赖关系,以便上面的 B2 有效?

我认为您无法使用该特定语法来做到这一点。您可以让 Laravel 自动为您的 class 注入依赖项,但无论如何您都需要从容器中解析它。

请参阅此处的文档以了解绑定:https://laravel.com/docs/5.3/container#binding 以及更进一步,从容器中解析 classes。