在 Symfony config env() helper 中使用 resolve 运算符

Using the resolve operator in the Symfony config env() helper

This 文章介绍了类型转换和一些可以在 Symfony 配置中的 env() 助手内部使用的方便的运算符。除了 resolve: 运算符外,一切都很清楚。文章说:

The resolve: operator replaces container parameter names by their values:

我将拥有哪些名称取自环境变量值的参数?有什么意义?

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

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)%'

我在谷歌上搜索了这个问题,但互联网上几乎没有任何信息,也没有向我说明任何问题。

DATABASE_URL 的实际值是多少,预期结果是什么?

示例来自 documentation

parameters:
    project_dir: '/foo/bar'
    env(DB): 'sqlite://%%project_dir%%/var/data.db'
    db_dsn: '%env(resolve:DB)%'

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

url: '%env(resolve:DATABASE_URL)%'

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

parameters:
    env(DATABASE_URL): 'sqlite://%kernel.project_dir%/var/data.db'
    db_dsn: '%env(resolve:DB)%'

因为 DATABASE_URL 包含 %kernel.project_dir% 参数,这将是您项目的根目录。

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

没有解决 url 将是:

url: 'sqlite://%kernel.project_dir%/var/data.db'

解决(示例)url 将是:

url: 'sqlite:///Users/your_name/whatever/directory/var/data.db'