renoki-co/laravel-yaml-config

通常是 Laravel 的配置文件,但使用一个 YAML 文件。在配置中编写对象和数组,无需编写难看的内联 JSON。


README

CI codecov StyleCI Latest Stable Version Total Downloads Monthly Downloads License

通常是 Laravel 的配置文件,但使用一个 YAML 文件。在配置中编写对象和数组,无需编写难看的内联 JSON。

🚀 安装

您可以通过 composer 安装此包

composer require renoki-co/laravel-yaml-config

发布配置

php artisan vendor:publish --provider="RenokiCo\LaravelYamlConfig\LaravelYamlConfigServiceProvider" --tag="config"

🙌 使用方法

此包确保您不必在 .env 文件中使用内联 JSON,看起来像这样

AWS_CLUSTERS='[{"region": "us-east-1", "url": "..."}, {"region": "eu-west-1", "url": "..."}]'

// config/clusters.php
return [
    'aws' => env('AWS_CLUSTERS', json_encode([
        // create a default for it
    ])),
];

首先,在您的根 Laravel 项目的根目录中创建一个本地的 .laravel.yaml 文件

touch .laravel.yaml

以 YAML 格式声明您的配置

clusters:
  aws:
    - region: us-east-1
      url: https://...
    - region: eu-west-1
      url: https://...
  google:
    - region: europe-west1
      url: https://...
foreach (config('clusters.aws') as $cluster) {
    // $cluster['region']
}

您不应该将 .laravel.yaml 文件提交到代码仓库

echo ".laravel.yaml\n.laravel.yml" >> .gitignore

替换嵌套变量

虽然此包允许您设置任意配置而无需处理难看的编码 JSON,但您仍可以使用它来更新已存在的配置中的嵌套变量

database:
  connectons:
    mysql:
      host: mysql
clusters:
  aws:
    # ...

声明默认值

虽然您不应该提交 .laravel.yaml 文件,但您可以提交一个 .laravel.defaults.yaml 文件,该文件可以包含您已声明的特定配置的默认值

touch .laravel.config.yaml
clusters:
  aws: []
  google: []

顺序列表

在声明项目列表的默认值时请格外小心

# .laravel.defaults.yaml
clusters:
  - region: us-east-1
  - region: eu-west-1

当配置包含预填充列表的 .laravel.yaml,如下所示时,会出现奇怪的行为

# .laravel.yaml
clusters:
  - region: ap-south-1

您期望最终值中的 clusters 只包含一个项目时,实际上它会包含两个项目,第一个项目将被替换

// 'clusters' => [
//     ['region' => 'ap-south-1'],
//     ['region' => 'eu-west-1'],
// ]

dump(config('clusters'));

🐛 测试

vendor/bin/phpunit

🤝 贡献

有关详细信息,请参阅 CONTRIBUTING

🔒 安全性

如果您发现任何安全相关的问题,请通过电子邮件发送到 alex@renoki.org 而不是使用问题跟踪器。

🎉 致谢