Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork9.7k
[DependencyInjection] Allow to choose an index for tagged collection#30257
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Conversation
nicolas-grekas left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Cool, almost ready! Just a few comments to improve tests.
Please see fabbot report also.
src/Symfony/Component/DependencyInjection/Tests/Compiler/IntegrationTest.php OutdatedShow resolvedHide resolved
Uh oh!
There was an error while loading.Please reload this page.
src/Symfony/Component/DependencyInjection/Tests/Compiler/IntegrationTest.php OutdatedShow resolvedHide resolved
Uh oh!
There was an error while loading.Please reload this page.
src/Symfony/Component/DependencyInjection/Tests/Fixtures/includes/bar.php OutdatedShow resolvedHide resolved
Uh oh!
There was an error while loading.Please reload this page.
c84f9b9 tod18fd9aCompare22dfaf3 toa6ffe83Comparenicolas-grekas commentedFeb 16, 2019
(FYI, failures unrelated) |
src/Symfony/Component/DependencyInjection/Argument/TaggedIteratorArgument.phpShow resolvedHide resolved
Uh oh!
There was an error while loading.Please reload this page.
src/Symfony/Component/DependencyInjection/Tests/Compiler/IntegrationTest.php OutdatedShow resolvedHide resolved
Uh oh!
There was an error while loading.Please reload this page.
src/Symfony/Component/DependencyInjection/Argument/TaggedIteratorArgument.php OutdatedShow resolvedHide resolved
Uh oh!
There was an error while loading.Please reload this page.
93d55a0 toed131b4CompareXuruDragon commentedFeb 18, 2019
PR to the documentation added |
src/Symfony/Component/DependencyInjection/Argument/TaggedIteratorArgument.php OutdatedShow resolvedHide resolved
Uh oh!
There was an error while loading.Please reload this page.
src/Symfony/Component/DependencyInjection/Compiler/PriorityTaggedServiceTrait.phpShow resolvedHide resolved
Uh oh!
There was an error while loading.Please reload this page.
ed131b4 tod159479Compareb28017e toe04713fCompareXuruDragon commentedFeb 22, 2019
Code rebased on master, CI fixed |
e04713f toe7d0312CompareUh oh!
There was an error while loading.Please reload this page.
e7d0312 toe27a9c1Compare
xabbuh left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
👍 with a minor comment
src/Symfony/Component/DependencyInjection/Loader/YamlFileLoader.php OutdatedShow resolvedHide resolved
Uh oh!
There was an error while loading.Please reload this page.
e27a9c1 to101bfd7Comparenicolas-grekas commentedFeb 22, 2019
Thank you@XuruDragon. |
nicolas-grekas commentedFeb 22, 2019
And thank you@deguif! |
…ged collection (deguif, XuruDragon)This PR was merged into the 4.3-dev branch.Discussion----------[DependencyInjection] Allow to choose an index for tagged collection| Q | A| ------------- | ---| Branch? | master| Bug fix? | no| New feature? | yes| BC breaks? | no| Deprecations? | no| Tests pass? | yes| Fixed tickets |#29203| License | MIT| Doc PR |symfony/symfony-docs#11009This is the continuity of the PR#29598Add a way to specify an index based on a tag attribute when injecting a tag collection into services, but also a a way to fallback to a static method on the service class.```yamlservices: foo_service: class: Foo tags: - foo foo_service_tagged: class: Bar arguments: - !tagged tag: 'foo' index_by: 'tag_attribute_name' default_index_method: 'static_method'``````xml<?xml version="1.0" ?><container xmlns="http://symfony.com/schema/dic/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symfony.com/schema/dic/serviceshttp://symfony.com/schema/dic/services/services-1.0.xsd"> <services> <service> <tag name="foo_tag" /> </service> <service public="true"> <argument type="tagged" tag="foo_tag" index-by="tag_attribute_name" default-index-method="static_method" /> </service> </services></container>```Tasks* [x] Support PHP loader/dumper* [x] Support YAML loader/dumper* [x] Support XML loader/dumper (and update XSD too)* [x] Add tests* [x] DocumentationCommits-------101bfd7 [DI] change name to tag + add XMl support + adding yaml/xml tests845d3a6 Allow to choose an index for tagged collection
src/Symfony/Component/DependencyInjection/Argument/TaggedIteratorArgument.phpShow resolvedHide resolved
Uh oh!
There was an error while loading.Please reload this page.
src/Symfony/Component/DependencyInjection/Tests/Compiler/IntegrationTest.phpShow resolvedHide resolved
Uh oh!
There was an error while loading.Please reload this page.
enumag commentedFeb 28, 2019
stof commentedFeb 28, 2019
enumag commentedFeb 28, 2019
@stof Thanks! Indeed that's exactly what I need. |
…or service in an injected service locator argument (XuruDragon, nicolas-grekas)This PR was merged into the 4.3-dev branch.Discussion----------[DependencyInjection] Add ability to define an index for service in an injected service locator argument| Q | A| ------------- | ---| Branch? | master| Bug fix? | no| New feature? | yes| BC breaks? | no| Deprecations? | no| Tests pass? | yes| Fixed tickets | n/a| License | MIT| Doc PR | in progress / symfony/symfony-docs#...It's more or less the same thing then the PR#30257 but for a service locator argumentAdd a simple way to specify an index based on a tag attribute to simplify retrieving a specific service when injecting a service locator as argument into services, but also a way to fallback to a static method on the service class.Yaml:```yamlservices: foo_service: class: Foo tags: - {name: foo_tag, key: foo_service} foo_service_tagged: class: Bar arguments: - !tagged_locator tag: 'foo_tag' index_by: 'key' default_index_method: 'static_method'```XML:```xml<?xml version="1.0" ?><container xmlns="http://symfony.com/schema/dic/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symfony.com/schema/dic/serviceshttp://symfony.com/schema/dic/services/services-1.0.xsd"> <services> <service> <tag name="foo_tag" key="foo_service" /> </service> <service public="true"> <argument type="tagged_locator" tag="foo_tag" index-by="key" default-index-method="static_method" /> </service> </services></container>```PHP:```php// config/services.phpuse Symfony\Component\DependencyInjection\Argument\TaggedIteratorArgument;use Symfony\Component\DependencyInjection\Argument\ServiceLocatorArgument;$container->register(Foo::class) ->addTag('foo_tag', ['key' => 'foo_service']);$container->register(App\Handler\HandlerCollection::class) // inject all services tagged with app.handler as first argument ->addArgument(new ServiceLocatorArgument(new TaggedIteratorArgument('app.handler', 'key')));```Usage:```php// src/Handler/HandlerCollection.phpnamespace App\Handler;use Symfony\Component\DependencyInjection\ServiceLocator;class HandlerCollection{ public function __construct(ServiceLocator $serviceLocator) { $foo = $serviceLocator->get('foo_service'): }}```Tasks* [x] Support PHP loader/dumper* [x] Support YAML loader/dumper* [x] Support XML loader/dumper (and update XSD too)* [x] Add tests* [x] DocumentationCommits-------cb3c56b Support indexing tagged locators by FQCN as fallback250a2c8 [DI] Allow tagged_locator tag to be used as an argument
…or service locators (Anthony MARTIN)This PR was submitted for the master branch but it was merged into the 4.3 branch instead (closes#11042).Discussion----------[DependencyInjection] Doc for Allow to choose an index for service locatorsHere is the doc for the new feature implemented in : [symfony/symfony#30348](symfony/symfony#30348) that follow the feature [symfony/symfony#30257](symfony/symfony#30257)Commits-------d63c298 [DependencyInjection] Doc for Allow to choose an index for service locator collection
…n index for tagged collection (Anthony MARTIN)This PR was submitted for the master branch but it was merged into the 4.4 branch instead.Discussion----------[DependencyInjection] Doc for #30257 Allow to choose an index for tagged collectionHere is the doc for the new feature implemented in :symfony/symfony#30257Commits-------980b3d3 [DependencyInjection] Doc for #30257 Allow to choose an index for tagged collection
Uh oh!
There was an error while loading.Please reload this page.
This is the continuity of the PR#29598
Add a way to specify an index based on a tag attribute when injecting a tag collection into services, but also a a way to fallback to a static method on the service class.
Tasks