Symfony2 在 YAML Config 中使用 PHP 类常量?

2022-08-30 20:25:43

我知道这可能是不可能的,但是有没有一种干净的方法可以在Symfony2的YAML config/services/etc.文件中使用PHP类常量?

例如,如果我有这个:

namespace My\Bundle\DependencyInjection;

class MyClass
{
    const MY_CONST = 'cookies';
}

是否可能出现类似情况(在 .yml 文件中):

services:
    my_service:
        class: Some\Class
        arguments:
            - %My\Bundle\DependencyInjection\MyClass::MY_CONST%

这将有助于保持两者之间的一致性。


答案 1

从 Symfony 3.2 开始,也可以使用特殊语法在 YAML 文件中使用 PHP 常量:!php/const:

parameters:
    bar: !php/const:PHP_INT_MAX

有关更多详细信息,请参阅 Symfony 博客文章


请注意:在Symfony 4中,语法略有变化。您必须使用空格而不是双冒号,例如:

parameters:
    bar: !php/const PHP_INT_MAX

否则,您将收到一个 FileLoaderLoadException,其中包含消息“注意:未初始化的字符串偏移量”。


答案 2

对于 Symfony >=2.4,您可以使用表达式语言

例:

'@=constant("Symfony\\Bridge\\Monolog\\Logger::INFO")'

推荐