Задать вопрос

Почему Laravel не может внедрить зависимость?

Доброго дня.
Создал свою папочку Contracts, в которой лежит интерфейс DataSource. Ожидаю в методе контроллера экземпляр DataSource, но Laravel говорит, что этого класса нет.
ReflectionException - Class App\Contracts\DataSource does not exist

То есть, DI отрабатывает, пытается зарезольвить имя и подключить файл, но не находит его. Хотя он есть!
При этом в сервис-провайдере привязал ради теста интерфейс к конкретной реализации.
public function register()
{
    $this->app->bind('App\Contracts\DataSource', function ($app) {
        return new App\DataSources\Source;
    });
}

Не работает. Почему? Как решить проблему?

Заранее спасибо.
  • Вопрос задан
  • 88 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
samoilenkoevgeniy
@samoilenkoevgeniy
Lead Full-Stack Web Developer
composer dump-autoload
Ответ написан
sanek_os9
@sanek_os9
Работаю с Laravel, Vue, Vuetify, AWS Amazon, Linux
Перед App попробуйте \ поставить
$this->app->bind('\App\Contracts\DataSource', function ($app) {
        return new \App\DataSources\Source;
    });

или
use App\Contracts\DataSource;
use App\DataSources\Source;

и
$this->app->bind(DataSource::class, function ($app) {
        return new Source::class;
    });
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы