I know this is probably not possible, but is there a clean way to use a PHP class constant within a YAML config/services/etc. file for Symfony2?
For example, if I have this:
namespace My\Bundle\DependencyInjection;
class MyClass
{
const MY_CONST = 'cookies';
}
Is something like this possible (in a .yml file):
services:
my_service:
class: Some\Class
arguments:
- %My\Bundle\DependencyInjection\MyClass::MY_CONST%
That'd go a long way in helping maintain consistency between the two.
For Symfony >=2.4 you can use expression language
Example:
'@=constant("Symfony\\Bridge\\Monolog\\Logger::INFO")'
As of Symfony 3.2, it's also possible to use PHP constants in YAML files using a special !php/const:
syntax:
parameters:
bar: !php/const:PHP_INT_MAX
See the Symfony blog post for more details.
Please note: In Symfony 4 the syntax was slightly changed. You have to use a space instead of a double colon, for example:
parameters:
bar: !php/const PHP_INT_MAX
Otherwise, you will get a FileLoaderLoadException with the message "Notice: Uninitialized string offset".
In versions before Symfony 3.2, injecting PHP-constants only works with XML:
<parameter key="my_service.my_const" type="constant">My\Bundle\DependencyInjection\MyClass::MY_CONST</parameter>
If you want to keep yor yml files, you could just import the xml-file into your services.yml. Mixing config styles might be a bit ugly, but as far as I know this is the only way to do it.
If this doesn't work for you, my comment to your question applies.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With