以下是EmailNotifier类
class EmailNotifier
{
public function notify()
{
echo 'Sending payment notification via email' ;
}
}
以下是我的AppServiceProvider
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
}
public function register()
{
$this->app->make(App\EmailNotifier::class); // resolve the EmailNotifier Class
}
}
以下是结算类
class Billing
{
protected $notifier;
public function __construct(EmailNotifier $notifier)
{
$this->notifier = $notifier;
}
public function pay()
{
// Process the bill payment
$this->notifier->notify();
}
}
在我的控制器中我做了
$data = new Billing(1);
正如您所看到的,我已经在AppServiceProvider类中解析了EmailNotifier类,但是当我像上面的代码那样调用它时,它会抛出一个错误,表示它必须是EmailNotifier的实例'
根据laravel文档,它表示:
你可以"输入提示"类的构造函数中的依赖项 由容器解决(对于automatic injection)
如何在laravel中实现类型提示的自动注入?
答案 0 :(得分:2)
使用$data = resolve(Billing::class);
代替$data = new Billing(1);
,您可以从服务提供商的注册方法中删除$this->app->make(App\EmailNotifier::class); // resolve the EmailNotifier Class
。