包开发:如何包含提供者和别名(Socialite)

时间:2016-05-06 12:48:52

标签: php laravel-5 package

我正在开发我的第一个基于Larvel的软件包。我想要包含Socialite包,所以我把它放在我的composer.json文件

"require": {
    "laravel/socialite": "^2.0"
},

现在,我如何在/config/app.php中正常包含提供商和别名?

我想现在我已经阅读了关于此事的所有堆栈溢出,但似乎没有任何工作。

这是我的软件包服务提供商:

public function boot()
    {
        include __DIR__.'/routes.php';

        $this->app->register('Laravel\Socialite\SocialiteServiceProvider');
        $this->app->alias('Laravel\Socialite\Facades\Socialite', 'Socialite');

        $this->loadViewsFrom(__DIR__.'/../views', 'package-name');
        $this->loadTranslationsFrom(__DIR__.'/../lang', 'package-name');
        $this->publishes([
            __DIR__.'/../views' => resource_path('views/vendor/package-name'),
        ]);

        $this->publishes([
            __DIR__.'/../database/migrations/' => database_path('migrations')
        ], 'migrations');
    }

结果:

  

Class' Laravel \ Socialite \ SocialiteServiceProvider'找不到

更新

"psr-4": {
            "App\\": "app/",
            "Rubenwouters\\CrmLauncher\\": "packages/rubenwouters/crm-launcher/src/"
        }

2 个答案:

答案 0 :(得分:0)

在您的套餐服务提供商的注册方法中,您可以这样做:

public function boot() {
    $this->app->register(ClassOfScialiteServiceProvider);
    $this->app->alias(FacedeClass, 'Alias');
}

修改

但首先......要以正确的方式添加您的包(对于您可以添加要求的供应商),您必须将一些方法添加到主composer.json - required名单。您可以使用以下方法之一:

1

将您的包添加到官方作曲家存储库(packagist

2

制作自己的作曲家资料库,例如Satis

3

最简单的方法是在composer.json内添加你的git repo dependanci,如:

"repositories": [
    {
      "type": "vcs",
      "url": "git@your_repo/crm-launcher.git"
    },
],
"require": {
     (...)
     "rubenwouters/crm-launcher": "dev-master"
}

OR

或者只是将您的依赖项("laravel/socialite": "^2.0")移动到主composer.json。 :)

答案 1 :(得分:0)

Laravel \ Socialite \ SocialiteServiceProvider :: class,注册为Config \ app.php作为提供者,同时注册 注册'Socialize'=> Laravel \ Socialite \ Facades \ Socialite :: class,到Config \ app.php作为别名。

可能会解决您的问题。