1

所以我有这个应用程序绑定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在控制器中收到错误?它不应该使用我刚刚做的应用程序绑定吗?

4

2 回答 2

1

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

如果您想要为类本身创建一个别名(看起来就是这种情况),请继续 app/config/app.php并将其添加到aliaseskey 下。像这样的东西:

应用程序/配置/app.php

'aliases' => array(
    'HybridAuth'      => 'Hybrid_Auth',
    // ...
),
于 2013-07-16T22:12:12.673 回答
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'));
});
于 2013-07-15T22:00:51.990 回答