作为数组的外部环境变量

Ser*_*nov 5 symfony

如何将外部环境变量设置为数组?

如果我有环境变量

SYMFONY__NSQLOOKUPD__HOSTS=["localhost:4161"]
Run Code Online (Sandbox Code Playgroud)

并在 config.yml 中:

socloz_nsq:
  lookupd_hosts: %nsqlookupd.hosts% 
Run Code Online (Sandbox Code Playgroud)

然后我得到一个错误:

Invalid type for path "socloz_nsq.lookupd_hosts". Expected array, but got string 
Run Code Online (Sandbox Code Playgroud)

Ser*_*nov 2

我已经找到解决方案了。这里是:

在 config.yml 中添加到导入部分:

imports:
    - { resource: parameters.php }
Run Code Online (Sandbox Code Playgroud)

然后在config.yml所在的同一目录中创建parameters.php文件,并查看以下示例:

<?php

$nsqlookupdhosts = getenv('SYMFONY__NSQLOOKUPD__HOSTS');
$nsqdhosts = getenv('SYMFONY__NSQD__HOSTS');

$container->setParameter('nsqlookupd.hosts.parsed', explode(',', $nsqlookupdhosts));
$container->setParameter('nsqd.hosts.parsed', explode(',', $nsqdhosts));
Run Code Online (Sandbox Code Playgroud)

在环境变量中使用逗号作为分隔符(不限于逗号,可以使用任何)

SYMFONY__NSQLOOKUPD__HOSTS=localhost:4161,some.server:2222
Run Code Online (Sandbox Code Playgroud)