3

我对 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;
    }

}

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

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

我错过了什么吗?

4

1 回答 1

1

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

App::bind('User', function()
{
    return new User;
});
于 2012-12-11T22:50:39.430 回答