incenteev/dynamic-parameters-bundle

此包已被废弃,不再维护。作者建议使用 symfony/dependency-injection 包。

为 Symfony 从环境变量中运行时检索参数

dev-master / 1.0.x-dev 2017-04-30 11:04 UTC

This package is not auto-updated.

Last update: 2022-02-01 12:43:01 UTC


README

此包提供了一种在运行时从环境变量中读取参数的方法。当环境变量不可用时,使用容器参数中定义的值作为后备。

Build Status Scrutinizer Code Quality Code Coverage SensioLabsInsight Latest Stable Version Latest Unstable Version License

安装

安装是一个快速(我保证!)的两步过程。

  1. 下载 IncenteevDynamicParametersBundle
  2. 启用该包

第一步:使用 composer 安装 IncenteevDynamicParametersBundle

运行以下 composer require 命令

$ composer require incenteev/dynamic-parameters-bundle

第二步:启用该包

最后,在内核中启用该包

// app/AppKernel.php

public function registerBundles()
{
    $bundles = array(
        // ...
        new Incenteev\DynamicParametersBundle\IncenteevDynamicParametersBundle(),
    );
}

用法

定义参数名称与环境变量配置的映射。

# app/config/config.yml
incenteev_dynamic_parameters:
    parameters:
        database_host: DATABASE_HOST
        "database.name": DATABASE_NAME

环境变量总是字符串。为了能够设置其他类型的参数,该包支持将环境变量解析为内联 Yaml。

# app/config/config.yml
incenteev_dynamic_parameters:
    parameters:
        use_ssl:
            variable: HAS_SSL
            yaml: true

ParameterHandler 集成

如果您使用的是 Incenteev ParameterHandler 的 env-map 功能,可以非常容易地导入整个 env-map。

# app/config/config.yml
incenteev_dynamic_parameters:
    import_parameter_handler_map: true
    parameters:
        something_else: NOT_IN_THE_COMPOSER_JSON

ParameterHandler 将环境变量解析为内联 Yaml,因此当导入映射时,这些变量的 Yaml 解析将自动启用。

注意:任何显式定义的参数将覆盖导入的映射。

默认情况下,该包将在 %kernel.root_dir%/../composer.json 中查找 composer.json 文件。如果您使用非标准的内核位置,您可以将 composer.json 文件的路径更改为读取 env-map。

# app/config/config.yml
incenteev_dynamic_parameters:
    import_parameter_handler_map: true
    composer_file: path/to/composer.json

运行时检索参数

该包处理服务参数,但无法更改 $container->getParameter() 的行为。然而,它公开了一个服务以获取考虑环境变量的参数。

$this->get('incenteev_dynamic_parameters.retriever')->get('use_ssl');

限制

  • 在运行时直接从容器中获取参数将不会使用环境变量。
  • 通过连接其他参数构建的参数或参数将不会依赖于环境变量(尚未)。