3
已经询问过这个主题的多个问题,但我仍然有这个问题,我不知道问题是什么。Laravel 5的目标是不可实例化的
我想实现我可以实例化一个接口而不是实现。
我使用Laravel 5,这是代码/结构:
在应用程序,我已经创建了一个合同文件夹。在此文件夹我有Messenger.php:
Messenger.php
<?php namespace App\Contracts;
interface Messenger {
public function goodmorning($name);
}
在应用程序/服务我有 DailyMessenger.php
<?php namespace App\Services;
use App\Contracts\Messenger;
class DailyMessenger implements Messenger {
public function goodmorning($name)
{
return 'Goodmorning '. $name;
}
}
现在我想实例化我的接口控制器:
现在public function __construct(Messenger $messenger)
{
$this->messenger = $messenger;
}
,如果我按照Laravel网站上的文档,我应该只在服务容器,这是我在现有的AppServiceProvider.php
public function register()
{
$this->app->bind(
'Illuminate\Contracts\Auth\Registrar',
'App\Services\Registrar'
);
$this->app->bind('App\Contacts\Messenger', 'App\Services\DailyMessenger');
}
办?如果我访问相应的登记本映射到控制器的路线我得到的错误:
BindingResolutionException in Container.php line 785:
Target [App\Contracts\Messenger] is not instantiable.
我想我已经严格遵循了Laravel文档,但我缺少什么?在此先感谢:-)