Как я могу использовать константу класса в качестве тега для службы связанных параметров?
Я пометил группу служб, которые реализуют такой же интерфейс в моей конфигурации:
// services.yml
services:
_instanceof:
App\SomeInterface:
tags: [ !php/const App\SomeInterface::TAG ]
(Где значение для App\SomeInterface::TAG
является very_unique_identifier
)
Я хотел бы повторно использовать это значение для привязки этого параметра следующим образом:
// services.yaml
services:
_defaults:
autowire: true
autoconfigure: true
public: false
bind:
$fooStrategies: !tagged !php/const App\SomeInterface::TAG
Но когда я так делаю, я получаю пустой RewindableGenerator
.
Вместо этого я могу сделать это так, используя буквальное значение константы:
bind:
$fooStrategies: !tagged 'very_unique_identifier'
... и он работает, как ожидалось, и RewindableGenerator
есть все необходимые сервисы внутри.
Как я могу использовать константу PHP в обоих местах, чтобы мне не приходилось повторять значение в разных местах? Очевидно, не такая уж большая проблема, но я бы хотел избежать этого, если возможно.
1 ответ
Вы должны иметь возможность настроить параметр со значением
!php/const App\SomeInterface::TAG
а затем используйте имя параметра в service.yml.
parameters.yml
parameters:
interfaceTag: !php/const App\SomeInterface::TAG
а потом
services.yml
services:
_defaults:
autowire: true
autoconfigure: true
public: false
bind:
$fooStrategies: !tagged '%interfaceTag%'