在Synfony config env()帮助器中使用resolve运算符

sup*_*r.t 2 php symfony symfony4

文章介绍的类型转换并可在内部使用一些方便的运营商env()在Symfony的CONFIGS帮手。除resolve:操作员外,其他一切都很清楚。文章说:

resolve:运算符用其值替换容器参数名称:

我将要使用其名称来自env变量值的参数吗?重点是什么?

例如,在学说捆绑包的配置中使用它:

dbal:
    # configure these for your database server
    driver: 'pdo_mysql'
    server_version: '5.7'
    charset: utf8mb4

    # With Symfony 3.3, remove the `resolve:` prefix
    url: '%env(resolve:DATABASE_URL)%'
Run Code Online (Sandbox Code Playgroud)

我正在搜索该问题,但Internet上几乎没有任何信息,也无法向我澄清任何信息。

pio*_*ura 6

很简单 在您的示例中,您具有:

url: '%env(resolve:DATABASE_URL)%'
Run Code Online (Sandbox Code Playgroud)

如果DATABASE_URL值本身包含任何容器参数,例如Romain示例:

parameters:
    env(DATABASE_URL): 'sqlite://%kernel.project_dir%/var/data.db'
    db_dsn: '%env(resolve:DB)%'
Run Code Online (Sandbox Code Playgroud)

由于DATABASE_URL包含%kernel.project_dir%参数,该参数将是项目的根目录。

通过使用resolve,您可以将此%kernel.project_dir%参数替换为其值。

没有解析的URL将是:

url: 'sqlite://%kernel.project_dir%/var/data.db'
Run Code Online (Sandbox Code Playgroud)

使用resolve(示例),URL将为:

url: 'sqlite:///Users/your_name/whatever/directory/var/data.db'
Run Code Online (Sandbox Code Playgroud)