何时需要在容器中显式注册类?
假设我的课程取决于一些标准的Laravel组件:
<?php
class Dump
{
public function __construct(
\Illuminate\Contracts\Config\Repository $config,
\Illuminate\Contracts\Filesystem\Filesystem $filesystem
) {
}
}
通常我会在服务提供商中这样做:
$this->app->singleton(Dump::class, function (Application $app) {
return new Dump($app->make('config'), $app->make('files'));
});
然而,我发现这是多余的。如果我做resolve(Dump::class)
,Laravel会自行解决并注入这些组件。我刚刚在集成测试中遇到过这个问题。
如果根据Dump
还有其他课程怎么办? Laravel会解析Dump
并将其注入依赖的自定义类吗?你能解释它能够/不能自动解决和注入的内容吗?只有标准的地方,如工作/控制器或任何地方?似乎我在理解容器时遗漏了一些东西。