应用程序绑定仍会导致找不到类

时间:2013-07-15 18:55:30

标签: php laravel laravel-4

所以我在routes.php中有这个应用程序绑定:

App::bind('HybridAuth', function()
{
    return new Hybrid_Auth(Config::get('hybridauth'));
});

和我的控制器上的这个构造函数:

public function __construct(UserRepository $user, HybridAuth $oauth)
{
    $this->user = $user;
    $this->oauth = $oauth;
}

为什么我的控制器仍然出现Class HybridAuth not found错误?它不应该使用我刚刚做的app绑定。

2 个答案:

答案 0 :(得分:1)

嗯,这主要是因为当你进行绑定时,你并没有真正为类创建一个别名,而是创建了该类的一个实例,以后可以通过App::make('HybridAuth')来访问它。

如果你想要的是为类本身创建一个别名,就像在这种情况下那样,继续app/config/app.php并将其添加到aliases键下。像这样:

应用/配置/ app.php

'aliases' => array(
    'HybridAuth'      => 'Hybrid_Auth',
    // ...
),

答案 1 :(得分:0)

在不了解oAuth类是如何加载(或不自动加载)的情况下,我的猜测是可能需要告诉Laravel您的Hybrid_Auth类在哪里。请注意,像那样的绑定(Laravel在控制器中使用魔法)不能代替设置自动加载 - PHP仍然需要知道如何找到你的类。

App::bind('HybridAuth', function()
{
    return new Hybrid_Auth(Config::get('hybridauth'));
});

可能需要变成更像这样的东西:

App::bind('HybridAuth', function()
{
    return new \Some\Namespace\Hybrid_Auth(Config::get('hybridauth'));
});