Laravel 4: целевой интерфейс не может быть создан

Я сравнивал свой код на этот вопрос и многие другие руководства онлайн, но с небольшим успехом. Все работает нормально, пока я не попытаюсь ввести интерфейс в моем контроллере. Когда я делаю инъекцию, я получаю Target Interface — не инстанцируемая ошибка.

Приложение \ модели \ Interfaces \ InterviewInterface.php

<?php namespace app\models\Interfaces;

interface InterviewInterface {
public function fetch($id);
}

приложение \ модели \ Interview.php

use app\models\Interfaces\InterviewInterface;

class Interview extends Eloquent implements InterviewInterface  {

public function fetch($id)
{
return Interview::find($id);
}

}

routes.php

App::bind('app\models\Interfaces\InterviewInterface');

composer.json

"psr-4": {
"Blog\\Articles\\" : "app/lib/Blog/Articles",
"app\\models\\Interfaces\\" : "app/models/Interfaces/InterviewInterface.php"}

AdminInterviewController.php

use app\models\Interfaces\InterviewInterface as InterviewInterface;

class AdminInterviewController extends BaseController  {

public function __construct(InterviewInterface $interview)
{
$this->interview = $interview;
$this->beforeFilter('auth');
}

}

Как только я добавлю

use app\models\Interfaces\InterviewInterface as InterviewInterface;

а также

__construct(InterviewInterface $interview)
$this->interview = $interview;

линии, это дает мне ошибку. Я вытащил их, без ошибок.

Я многократно запускал команды php composer.phar dump-autoload и php artisan dump-autoload, и они выполняются успешно.

Есть идеи? Я очень ценю это.

1

Решение

Вам необходимо привязать интерфейс к классу, чтобы разрешить его из IOC:

В файле rout.php, предполагая, что это не пространство имен:

App::bind('app\modesl\Interfaces\InterviewInterface', 'Interview');
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]