所以我在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绑定。
答案 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'));
});