pragmarx/yaml

使用 yaml 加载您的 Laravel 配置文件

v1.3.0 2022-06-13 21:27 UTC

This package is auto-updated.

Last update: 2024-09-14 02:33:02 UTC


README

一个 Laravel YAML 解析器和配置加载器

Latest Stable Version License Code Quality Build

Coverage StyleCI SensioLabsInsight

理由

配置文件越来越大,难以维护和查看,每天如此。为什么不直接使用 YAML 加载它们呢?

哪个更简洁?

主要特性

将一个文件加载到 Laravel 配置中

Yaml::loadToConfig(config_path('myapp.yml'), 'my-app-conf');

或者整个目录,递归地,这样所有这些文件都会通过单个命令加载

Yaml::loadToConfig(config_path('myapp'), 'my-app-conf');

加载包含所有配置文件的目录

.
└── myapp
    ├── multiple
    │   ├── alter.yml
    │   ├── app.yml
    │   └── second-level
    │       └── third-level
    │           ├── alter.yml
    │           └── app.yml
    ├── single
        └── single-app.yml

然后您就可以像在 Laravel 中一样使用它了

config('my-app-conf.multiple.second-level.third-level.alter.person.name')

执行函数,就像在常规 Laravel PHP 数组配置中一样。

repository: "{{ env('APP_NAME') }}"
path: "{{ storage_path('app') }}"

配置值可以引用配置键,您只需这样引号即可

{{'format.version'}}

您可以为 YAML 文件添加注释,这是 JSON 不允许的

build:
  mode: git-local  #### other modes: git-remote or number

解析器和转储方法

如果您需要直接处理 YAML,您可以使用这些公共方法

Yaml::parse($input, $flags) // Parses YAML into a PHP value.

Yaml::parseFile($filename, $flags) // Parses a YAML file into a PHP value.

Yaml::dump($input, $inline, $indent, $flags) // Dumps a PHP value to a YAML string.

这些是到 Symfony 的 YAML 的简单桥梁。

安装

通过 Composer

$ composer require pragmarx/yaml

使用

像通常一样发布您的包

$this->publishes([
    __DIR__.'/../config/version.yml' => $this->getConfigFile(),
]);

在您的 boot() 方法中加载配置

$this->app
     ->make('pragmarx.yaml')
     ->loadToConfig($this->getConfigFile(), 'my-package');

或者使用 Facade

Yaml::loadToConfig(config_path('myapp.yml'), 'my-package');

它将合并到您的 Laravel 配置中

config('my-package.name');

利用 PECL YAML

要利用 PECL YAML,您应该 安装 PECL YAML 扩展 并在您的服务提供者的 register() 方法中注册绑定

$this->app->bind(\PragmaRX\Yaml\Package\Support\Parser::class, \PragmaRX\Yaml\Package\Support\PeclParser::class);

示例

这是另一个使用此包的包中的 YAML 文件

current:
  major: 1
  minor: 0
  patch: 0
  format: "{$major}.{$minor}.{$patch}"
cache:
  enabled: true
  key: pragmarx-version
build:
  mode: git-local # git-remote or number
  number: 701031
  git-local: "git rev-parse --verify HEAD"
  git-remote: "git ls-remote {$repository} refs/heads/master"
  repository: "{{ env('APP_GIT_REPOSITORY') }}"
  length: 6
format:
  version: "{$major}.{$minor}.{$patch} (build {$build})"
  full: "version {{'format.version'}}"
  compact: "v{$major}.{$minor}.{$patch}-{$build}"
  ## add as many formats as you need

最低要求

  • Laravel 5.5
  • PHP 7.0

作者

Antonio Carlos Ribeiro

许可

本软件包根据 MIT 许可证授权 - 有关详细信息,请参阅 LICENSE 文件

贡献

欢迎拉取请求和问题。