Laravel 4: 目标接口不可实例化

Laravel 4: Target Interface is not instantiable

我一直在比较我的代码 to this question 和许多其他在线指南,但收效甚微。一切正常,直到我尝试在我的控制器中注入接口。当我注入它时,出现目标接口不可实例化错误。

app\models\Interfaces\InterviewInterface.php

<?php namespace app\models\Interfaces;

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

app\models\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 命令,它们都成功了。

有什么想法吗?非常感谢。

您需要将接口绑定到 class 以便从 IOC 解析它:

在 routes.php 中,假设它没有命名空间:

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