Laravel 4在控制器中注入一个雄辩的模型

时间:2012-12-10 18:22:24

标签: php laravel eloquent

我是DI和IoC这个概念的新手,所以我可能会这样做完全错了,但我试图将模型与控制器相匹配到控制器构造函数(UserModel - > UsersController)中,这样我就可以模拟它稍后。

所以我的模型看起来像:

use Illuminate\Auth\UserInterface;

class User extends Eloquent implements UserInterface {


    public function getAuthIdentifier()
    {
        return $this->getKey();
    }


    public function getAuthPassword()
    {
        return $this->password;
    }

}

然后我尝试像这样注入UsersController:

class UsersController extends Controller {

    protected $user;

    public function __construct(User $user)
    {
        $this->user = $user;
    }

    public function index()
    {
        //dd( $this->user);
        $users = $this->user->all();
        foreach ( $users as $user ) 
            print_r($user);
        return;
    }

}

然后,当我在浏览器中点击此控制器时,我收到“无法解析的依赖项解析”错误。

我注意到只有当我尝试注入的类是一个雄辩的子类时才会发生这种情况,如果我尝试使用不扩展的自定义类的相同代码然后它工作正常。

我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

除了评论之外,我终于知道这是一个复杂的问题。要绕过此操作,您需要将模型与IoC绑定,并手动返回模型的新实例。

App::bind('User', function()
{
    return new User;
});