Skip to content

Commit d4b53cd

Browse files
jvasseurnicolas-grekas
authored andcommitted
[DependencyInjection] Add tests using expressions as service factories
1 parent 358a21a commit d4b53cd

File tree

5 files changed

+30
-0
lines changed

5 files changed

+30
-0
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
2+
services:
3+
service_container:
4+
class: Symfony\Component\DependencyInjection\ContainerInterface
5+
public: true
6+
synthetic: true
7+
foo:
8+
class: Bar\FooClass
9+
public: true
10+
bar:
11+
class: Bar\FooClass
12+
public: true
13+
factory: '@=service("foo").getInstance()'
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?php
2+
3+
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
4+
5+
return function (ContainerConfigurator $c) {
6+
$s = $c->services()->defaults()->public();
7+
8+
$s->set('foo', 'Bar\FooClass');
9+
$s->set('bar', 'Bar\FooClass')->factory(expr('service("foo").getInstance()'));
10+
};

src/Symfony/Component/DependencyInjection/Tests/Fixtures/xml/services6.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,9 @@
6363
<service id="new_factory5" class="FooBarClass">
6464
<factory service="baz" />
6565
</service>
66+
<service id="factory_expression" class="FooClass">
67+
<factory expression="service('foo').getInstance()" />
68+
</service>
6669
<service id="alias_for_foo" alias="foo" />
6770
<service id="another_alias_for_foo" alias="foo" public="true"/>
6871
<service id="0" class="FooClass" />

src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/services6.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ services:
4040
new_factory3: { class: FooBarClass, factory: [BazClass, getInstance]}
4141
new_factory4: { class: BazClass, factory: [~, getInstance]}
4242
new_factory5: { class: FooBarClass, factory: '@baz' }
43+
factory_expression:
44+
class: FooClass
45+
factory: "@=service('foo').getInstance()"
4346
Acme\WithShortCutArgs: [foo, '@baz']
4447
alias_for_foo: '@foo'
4548
another_alias_for_foo:

src/Symfony/Component/DependencyInjection/Tests/Loader/PhpFileLoaderTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ public function provideConfig()
9797
yield ['inline_binding'];
9898
yield ['remove'];
9999
yield ['config_builder'];
100+
yield ['expression_factory'];
100101
}
101102

102103
public function testAutoConfigureAndChildDefinition()

0 commit comments

Comments
 (0)