incenteev / dynamic-parameters-bundle
Runtime retrieval of parameters from environment variables for Symfony
Installs: 10 538
Dependents: 0
Suggesters: 0
Security: 0
Stars: 42
Watchers: 7
Forks: 9
Open Issues: 0
Requires
- symfony/config: ~2.3
- symfony/dependency-injection: ^2.6.2@dev
- symfony/expression-language: ~2.6
- symfony/http-kernel: ~2.3
- symfony/yaml: ~2.0
This package is not auto-updated.
Last update: 2022-02-01 12:43:01 UTC
README
This bundle provides a way to read parameters from environment variables at runtime. The value defined in the container parameter is used as fallback when the environment variable is not available.
Installation
Installation is a quick (I promise!) 2 step process:
- Download IncenteevDynamicParametersBundle
- Enable the bundle
Step 1: Install IncenteevDynamicParametersBundle with composer
Run the following composer require command:
$ composer require incenteev/dynamic-parameters-bundle
Step 2: Enable the bundle
Finally, enable the bundle in the kernel:
// app/AppKernel.php public function registerBundles() { $bundles = array( // ... new Incenteev\DynamicParametersBundle\IncenteevDynamicParametersBundle(), ); }
Usage
Define the map of parameter names with the environment variable used to configure them.
# app/config/config.yml incenteev_dynamic_parameters: parameters: database_host: DATABASE_HOST "database.name": DATABASE_NAME
Environment variables are always strings. To be able to set parameters of other types, the bundle supports parsing the environment variable as inline Yaml:
# app/config/config.yml incenteev_dynamic_parameters: parameters: use_ssl: variable: HAS_SSL yaml: true
ParameterHandler integration
If you are using the env-map feature of the Incenteev ParameterHandler, you can import the whole env-map very easily:
# app/config/config.yml incenteev_dynamic_parameters: import_parameter_handler_map: true parameters: something_else: NOT_IN_THE_COMPOSER_JSON
The ParameterHandler parses the environment variables as inline Yaml, so the Yaml parsing is automatically enabled for these variables when importing the map.
Note: Any parameter defined explicitly will win over the imported map.
By default, the bundle will look for the composer.json file in %kernel.root_dir%/../composer.json
. If you use a non-standard location for your kernel, you can change the path to your composer.json file to read the env-map:
# app/config/config.yml incenteev_dynamic_parameters: import_parameter_handler_map: true composer_file: path/to/composer.json
Retrieving parameters at runtime
The bundle takes care of service arguments, but changing the behavior of $container->getParameter()
is not possible. However, it exposes a service to get parameters taking the environment variables into account.
$this->get('incenteev_dynamic_parameters.retriever')->get('use_ssl');
Limitations
- Getting a parameter from the container directly at runtime will not use the environment variable
- Parameters or arguments built by concatenating other parameters together will not rely on the environment variables (yet)