nbgrp/env-bundle

该包提供了一些有用的自定义 Symfony 环境变量处理器

维护者

详细信息

github.com/nbgrp/env-bundle

来源

问题

安装: 498

依赖: 0

建议者: 0

安全: 0

星标: 2

关注者: 1

分支: 1

开放问题: 2

类型:symfony-bundle

v3.0.0 2024-01-05 11:56 UTC

README

Latest Stable Version Latest Unstable Version Total Downloads License

PHP Version Require Codecov Audit

SymfonyInsight

概述

该包提供了一些有用的自定义 Symfony 环境变量处理器

  • Array Cast 处理器用于数组值类型转换。
  • CSV 处理器具有可定制的分隔符。

安装 / 配置

composer require nbgrp/env-bundle

config/bundles.php 中启用该包

return [
    // ...
    NbGroup\Symfony\NbgroupEnvBundle::class => ['all' => true],
];

默认情况下,所有环境变量处理器均被禁用。您应通过包配置显式启用所需的处理器。

YAML 配置示例

# config/packages/nbgroup_env.yaml
nbgroup_env:
    array_cast: true  #  enable Array Cast processor
    csv:              #  enable CSV processor
        dot: '.'      #  csv-dot will parse env value into array with "." as a separator
        colon: ':'    #  csv-colon will parse env value into array with ":" as a separator

PHP 配置示例(适用于 Symfony 5+)

// config/packages/nbgroup_env.php
return static function (Symfony\Config\NbgroupEnvConfig $config): void {
    $config->arrayCast()
        ->enabled(true)
    ;

    $config->csv()
        ->enabled(true)
        ->delimiter('dot', '.')
        ->delimiter('colon', ':')
    ;
};

处理器

ArrayCastEnvVarProcessor

将环境变量值类型转换为支持的类型之一

  • bool
  • int
  • float
  • string

nb: 如果 CSV 值不是数组,它将被转换为数组。

示例

# config/services.yaml
parameters:
    env(CSV_BOOL_ENV): '1,0,no,"true"'
    env(CSV_INT_ENV): '1,"2","3"'
    env(JSON_FLOAT_ENV): '{"key1": 1.1,"key2": "2.2"}'
    env(JSON_STRING_ENV): '["foo", "foo \"bar\"", ""]'
...
    bools:   '%env(bool-array:csv:CSV_BOOL_ENV)%'        #  will contains [true, false, false, true]
    ints:    '%env(int-array:csv:CSV_INT_ENV)%'          #  will contains [1, 2, 3]
    floats:  '%env(float-array:json:JSON_FLOAT_ENV)%'    #  will contains ['key1' => 1.1, 'key2' => 2.2]
    strings: '%env(string-array:json:JSON_STRING_ENV)%'  #  will contains ['foo', 'foo "bar"', '']

CsvEnvVarProcessor

将环境变量值解析为数组。与内置的 csv 处理器不同,此处理器支持自定义分隔符。

要使用 CSV 处理器,它应该被配置:请参阅 配置示例 了解如何指定可用分隔符(以及环境前缀)。

nb: 不要使用反斜杠 \ 转义双引号 " 封装字符(在 PHP ^7.4 上将不起作用)。要转义 ",只需写两次。

示例

# config/packages/nbgroup_env.yaml
nbgroup_env:
    csv:
        semi: ';'

# config/services.yaml
parameters:
    env(CSV_SEMICOLON_ENV): 'Alice;alice@mail.me'
...
    person: '%env(csv-semi:CSV_SEMICOLON_ENV)%'  #  will contains ['Alice', 'alice@mail.me']