定制 engageinteractive/laravel-config-provider 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

engageinteractive/laravel-config-provider

最新稳定版本:1.2

Composer 安装命令:

composer require engageinteractive/laravel-config-provider

包简介

Allows your users to change which config file your Laravel package uses at runtime.

README 文档

README

Build Status Total Downloads Latest Stable Version License

To avoid filename collisions between Laravel config files, use this package to allow your end users to change which file is accessed in your package.

Installation

composer require engageinteractive/laravel-config-provider

Now, in your package, create a new ConfigProvider:

namespace Example\Package;

use EngageInteractive\LaravelConfigProvider\ConfigProvider as BaseConfigProvider;

class ConfigProvider extends BaseConfigProvider
{
    /**
     * Key to use when retrieving config values. Override this if you require `Example\Package` to
     * a different file for its configuration.
     *
     * @var string
     */
    protected $configKey = 'example-package';
}

Then, rather than using the Config facade, or the config() function in Laravel, your package should use Laravel's service container to get access to a ConfigProvider:

namespace Example\Package;

use Illuminate\Support\ServiceProvider as BaseServiceProvider;

class ServiceProvider extends BaseServiceProvider
{
    /**
     * Prepare the App for your package.
     *
     * @return void
     */
    public function boot()
    {
        $this->publishes([
            __DIR__.'/../publishes/config/example-package.php' => config_path('example-package.php'),
        ], 'config');

        // Previous you could have done `config('example-package.enabled')`
        if (app(ConfigProvider::class)->get('enabled')) {
            // Do your thing!
        }
    }
}

Doing so will then allow end users of your package to change which file your package uses in by providing an alternative in their AppServiceProvider.

Config File Customisation

[Use this section to explain to your end users how to customise which file is used for your package. Don't forget to rename example-package.php to yours and delete this paragraph as well!]

By default the package uses the config/example-package.php file to define all the configuration settings. However, the package uses Laravel Config Provider to allow you change to which file is used. To do so bind your own instance of ConfigProvider in your AppServiceProvider. This is useful in cases where config/example-package.php is already in use within your project for example.

First create your own provider:

namespace App\Config;

use Example\Package\ConfigProvider;

class ExamplePackageConfigProvider extends ConfigProvider
{
    /**
     * Key to use when retrieving config values.
     *
     * @var string
     */
    protected $configKey = 'different-example-package';
}

Then, add the provider to your bindings on startup.

class AppServiceProvider extends ServiceProvider
{
...

    /**
     * All of the container bindings that should be registered.
     *
     * @var array
     */
    public $bindings = [
        \Example\Package\ConfigProvider::class => \App\Config\ExamplePackageConfigProvider::class,
    ];

...
}

The package uses ConfigProvider via the Laravel Service Container exclusively, so when we request it yours will be created instead.

Laravel Compatibility

Works on Laravel 5.5+.

License

Laravel Config Provider is open-sourced software licensed under the MIT license.

统计信息

  • 总下载量: 5.52k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 2
  • 点击次数: 0
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 2
  • Watchers: 6
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2018-09-13