Несколько вопросов уже заданы об этой теме, но у меня все еще есть эта проблема, и у меня нет подсказки о том, в чем проблема.Цель Laravel 5 не является реальностью
Я хочу добиться того, что я могу создать интерфейс вместо реализации.
Я использую Laravel 5, это код/структура:
В приложении, я создал папку Contracts. В этой папке у меня есть 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 точно, но что мне не хватает? Заранее спасибо :-)