首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Symfony2在YAML配置中使用PHP类常量?

Symfony2在YAML配置中使用PHP类常量?
EN

Stack Overflow用户
提问于 2013-02-06 02:00:44
回答 6查看 15.5K关注 0票数 20

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

例如,如果我有这个:

代码语言:javascript
复制
namespace My\Bundle\DependencyInjection;

class MyClass
{
    const MY_CONST = 'cookies';
}

是否可以这样(在.yml文件中):

代码语言:javascript
复制
services:
    my_service:
        class: Some\Class
        arguments:
            - %My\Bundle\DependencyInjection\MyClass::MY_CONST%

这在很大程度上有助于保持两者之间的一致性。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-02-06 17:40:24

在Symfony 3.2之前的版本中,注入PHP常量仅适用于XML:

代码语言:javascript
复制
<parameter key="my_service.my_const" type="constant">My\Bundle\DependencyInjection\MyClass::MY_CONST</parameter>

如果您想保留yor yml文件,只需将xml文件导入到services.yml中即可。混合配置风格可能有点难看,但据我所知,这是唯一的方法。

如果这对你不起作用,我对你的问题的评论也适用。

票数 17
EN

Stack Overflow用户

发布于 2015-09-16 02:58:01

对于Symfony >=2.4,您可以使用expression language

示例:

代码语言:javascript
复制
'@=constant("Symfony\\Bridge\\Monolog\\Logger::INFO")'
票数 21
EN

Stack Overflow用户

发布于 2016-10-25 23:12:54

应该可以在配置和类__construct($constant1)中以纯文本形式插入参数,然后通过constant($constant1)函数通过变量请求常量。

但我不确定这里的全局常量,因为它们可能在使用时没有定义,但对于具有整个命名空间的类常量来说应该不是问题,因为命名空间定位器在调用类的时候已经定义了。

示例配置:

代码语言:javascript
复制
services:
    my_service:
        class: Some\Class
    arguments:
        - 'My\Bundle\DependencyInjection\MyClass::MY_CONST'

和示例类方法:

代码语言:javascript
复制
public function __construct($arg1)
{
    $myRequiredConstantValue = constant($arg1);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14713913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档