我知道这可能是不可能的,但是有没有一种干净的方法可以在Symfony2的YAML config/services/etc.文件中使用PHP class常量呢?
例如,如果我有这个:
namespace My\Bundle\DependencyInjection;
class MyClass
{
const MY_CONST = 'cookies';
}
是否可以这样(在.yml文件中):
services:
my_service:
class: Some\Class
arguments:
- %My\Bundle\DependencyInjection\MyClass::MY_CONST%
这在很大程度上有助于保持两者之间的一致性。
发布于 2013-02-06 17:40:24
在Symfony 3.2之前的版本中,注入PHP常量仅适用于XML:
<parameter key="my_service.my_const" type="constant">My\Bundle\DependencyInjection\MyClass::MY_CONST</parameter>
如果您想保留yor yml文件,只需将xml文件导入到services.yml中即可。混合配置风格可能有点难看,但据我所知,这是唯一的方法。
如果这对你不起作用,我对你的问题的评论也适用。
发布于 2015-09-16 02:58:01
发布于 2016-10-25 23:12:54
应该可以在配置和类__construct($constant1)
中以纯文本形式插入参数,然后通过constant($constant1)
函数通过变量请求常量。
但我不确定这里的全局常量,因为它们可能在使用时没有定义,但对于具有整个命名空间的类常量来说应该不是问题,因为命名空间定位器在调用类的时候已经定义了。
示例配置:
services:
my_service:
class: Some\Class
arguments:
- 'My\Bundle\DependencyInjection\MyClass::MY_CONST'
和示例类方法:
public function __construct($arg1)
{
$myRequiredConstantValue = constant($arg1);
}
https://stackoverflow.com/questions/14713913
复制相似问题