本书未发布

配置文件

未匹配的标注

你的扩展包很有可能需要用户进行配置相关信息。

如果你要提供自定义的配置,在扩展包的根目录创建一个新的 config 目录,并在该目录下创建一个 config.php 文件,该文件将返回配置选项数组。

// 'config/config.php'
<?php

return [
  'posts_table' => 'posts',
  // other options...
];

合并配置文件

将配置文件注册到服务提供者的 register() 方法中,需要调用 $this->mergeConfigFrom 方法,第一个参数是 config.php 文件的完整目录,第二个参数是一个 key 值,可以通过 key 获的这个配置信息。

// 'BlogPackageServiceProvider.php'
public function register()
{
  $this->mergeConfigFrom(__DIR__.'/../config/config.php', 'blogpackage'); 
}

「译者注」 上面的示例不够明确,当我们的扩展包需要配置信息时,一版都是在扩展包中定义配置文件的格式、默认值。具体的配置信息应该在 Laravel 项目跟目录下的 config 文件夹创建自定义的配置文件。通过 mergeConfigFrom 方法后,用户自定义的配置信息就会覆盖扩展包默认的配置信息了。

「译者注」 根据 ServiceProvider 文件的 mergeConfigFrom 方法的代码,我们不难发现,mergeConfigFrom 方法的第二个参数就是 config 目录下的配置文件名。

protected function mergeConfigFrom($path, $key)
{
if (! $this->app->configurationIsCached()) {
$this->app['config']->set($key, array_merge(
require $path, $this->app['config']->get($key, [])
));
}
}

导出

为了允许用户修改默认的配置文件内容,我们需要提供导出配置的功能。可以在服务提供者的 boot() 方法中注册。因为改功能只能在命令行模式时才提供此功能,所以我们首先检查当前应用程序是否在命令行模式运行。我们将发布的配置文件设置为 config 标签。($this->publishes() 方法的第二个参数)

// 'BlogPackageServiceProvider.php'
public function boot()
{
  if ($this->app->runningInConsole()) {

    $this->publishes([
      __DIR__.'/../config/config.php' => config_path('blogpackage.php'),
    ], 'config');

  }
}

现在我们可以使用下面的命令来导出配置文件啦,执行此命令后,会自动在 Laravel 项目的 config 目录下创建一个 blogpackage.php 文件。

php artisan vendor:publish --provider="JohnDoe\BlogPackage\BlogPackageServiceProvider" --tag="config"

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/laravel-package...

译文地址:https://learnku.com/docs/laravel-package...

上一篇 下一篇
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
贡献者:1
讨论数量: 0
发起讨论 只看当前版本


暂无话题~