如何在Laravel服务提供程序中传递构造函数依赖项

时间:2016-01-24 01:34:30

标签: laravel-5

我正在服务提供商中注册我的社交认证服务,我的接口的实现需要在其构造函数中使用参数。

如何通过服务提供商传递?这是我的代码,但它在语法上是不正确的。

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);
        });
    }
}

1 个答案:

答案 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);
    });
}