我知道这可能是不可能的,但有一种干净的方法在YAML config/services/etc中使用PHP类常量.Symfony2的文件?
例如,如果我有这个:
namespace My\Bundle\DependencyInjection;
class MyClass
{
const MY_CONST = 'cookies';
}
Run Code Online (Sandbox Code Playgroud)
这样的事情是可能的(在.yml文件中):
services:
my_service:
class: Some\Class
arguments:
- %My\Bundle\DependencyInjection\MyClass::MY_CONST%
Run Code Online (Sandbox Code Playgroud)
这对于帮助保持两者之间的一致性有很大帮助.
Cmy*_*ker 21
对于Symfony> = 2.4,您可以使用表达式语言
例:
'@=constant("Symfony\\Bridge\\Monolog\\Logger::INFO")'
Run Code Online (Sandbox Code Playgroud)
kix*_*kix 17
从Symfony 3.2开始,也可以使用特殊!php/const:语法在YAML文件中使用PHP常量:
parameters:
bar: !php/const:PHP_INT_MAX
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅Symfony博客文章.
请注意:在Symfony 4中,语法略有改变.您必须使用空格而不是双冒号,例如:
parameters:
bar: !php/const PHP_INT_MAX
Run Code Online (Sandbox Code Playgroud)
否则,您将收到FileLoaderLoadException,并显示消息"Notice:Uninitialized string offset".
dbr*_*ann 16
在Symfony 3.2之前的版本中,注入PHP常量仅适用于XML:
<parameter key="my_service.my_const" type="constant">My\Bundle\DependencyInjection\MyClass::MY_CONST</parameter>
Run Code Online (Sandbox Code Playgroud)
如果要保留yml文件,可以将xml文件导入services.yml.混合配置样式可能有点难看,但据我所知,这是唯一的方法.
如果这不适合您,我对您的问题的评论适用.