【问题标题】:Package development: how to include provider and aliases (Socialite)包开发:如何包含提供者和别名(Socialite)
【发布时间】:2016-09-01 13:20:55
【问题描述】:

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

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

现在,我如何像通常在 /config/app.php 中那样包含提供程序和别名?

我想到目前为止,我已经阅读了有关此问题的所有 stackoverflow,但似乎没有任何效果。

这是我的包裹的服务提供者:

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

结果:

找不到类“Laravel\Socialite\SocialiteServiceProvider”

更新

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

【问题讨论】:

    标签: php laravel-5 package


    【解决方案1】:

    在你的包的服务提供者的注册方法中你可以这样做:

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

    编辑

    但首先...要以正确的方式添加您的包(向您可以添加要求的供应商),您必须了解如何将其添加到主 composer.json - required 列表中。您可以使用以下方法之一:

    1

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

    2

    制作您自己的作曲家存储库,例如 Satis

    3

    最简单的方法是将你的 git repodependanci 添加到 composer.json 中,例如:

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

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

    【讨论】:

    • 对不起。注册方法太快了。试试boot。我在我的例子中改变了它。
    • 我得到相同的“找不到类”错误。 :/ 我已经用我自己的服务提供商的代码编辑了我的问题。
    • 可以肯定的是,我应该在哪里运行它?在我的包文件夹中还是在主文件夹中?
    • 在主文件夹中。首先,你如何将你的包添加到主 composer.json
    • 我已经更新了我的问题。在那里你可以看到我是如何将我的包添加到主 composer.json 中的。
    【解决方案2】:

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

    也许这会解决你的问题。

    【讨论】:

      猜你喜欢
      • 2012-12-27
      • 2014-03-01
      • 1970-01-01
      • 2019-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-16
      相关资源
      最近更新 更多