我正在服务提供商中注册我的社交认证服务,我的接口的实现需要在其构造函数中使用参数。
如何通过服务提供商传递?这是我的代码,但它在语法上是不正确的。
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use App;
use App\User;
use Illuminate\Contracts\Auth\Guard;
use Laravel\Socialite\Contracts\Factory as Socialite;
class SocialAuthenticationServiceProvider extends ServiceProvider
{
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
//
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
App::bind('App\Repositories\SocialAuthenticationInterface', function () {
return new App\Repositories\SocialAuthentication(Socialite $socialite, Guard $auth, User $user);
});
}
}
答案 0 :(得分:0)
正确的方法是使用new关键字,而不是将您的dependecies分配给变量。并确保在课程顶部导入您的课程(例如使用Guard)。
public function register()
{
App::bind('App\Repositories\SocialAuthenticationInterface', function () {
return new App\Repositories\SocialAuthentication(new Socialite, new Guard, new User);
});
}