Skip to content

Commit b82199d

Browse files
committed
minor #9784 Add the class attribute for service factories (javiereguiluz)
This PR was merged into the 3.4 branch. Discussion ---------- Add the class attribute for service factories This tries to fix #9716 ... but it needs validation from some experts in this topic. Thanks! Commits ------- 4a492b8 Add the class attribute for service factories
2 parents cc347ee + 4a492b8 commit b82199d

File tree

1 file changed

+16
-9
lines changed

1 file changed

+16
-9
lines changed

service_container/factories.rst

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,10 @@ configure the service container to use the
4040
# ...
4141
4242
AppBundle\Email\NewsletterManager:
43-
# call the static method
43+
# call the static method that creates the object
4444
factory: ['AppBundle\Email\NewsletterManagerStaticFactory', createNewsletterManager]
45+
# define the class of the created object
46+
class: AppBundle\Email\NewsletterManager
4547
4648
.. code-block:: xml
4749
@@ -54,8 +56,9 @@ configure the service container to use the
5456
http://symfony.com/schema/dic/services/services-1.0.xsd">
5557
5658
<services>
57-
<service id="AppBundle\Email\NewsletterManager">
58-
<!-- call the static method -->
59+
<service id="AppBundle\Email\NewsletterManager"
60+
class="AppBundle\Email\NewsletterManager">
61+
<!-- call the static method that creates the object -->
5962
<factory class="AppBundle\Email\NewsletterManagerStaticFactory" method="createNewsletterManager" />
6063
6164
<!-- starting from Symfony 3.3, if the factory class is the same as the service
@@ -72,11 +75,10 @@ configure the service container to use the
7275
// app/config/services.php
7376
7477
use AppBundle\Email\NewsletterManager;
75-
use AppBundle\NumberGenerator;
7678
use AppBundle\Email\NewsletterManagerStaticFactory;
7779
// ...
7880
79-
$container->register(NumberGenerator::class)
81+
$container->register(NewsletterManager::class, NewsletterManager::class)
8082
// call the static method
8183
->setFactory(array(NewsletterManagerStaticFactory::class, 'createNewsletterManager'));
8284
@@ -109,6 +111,7 @@ Configuration of the service container then looks like this:
109111
AppBundle\Email\NewsletterManager:
110112
# call a method on the specified factory service
111113
factory: 'AppBundle\Email\NewsletterManagerFactory:createNewsletterManager'
114+
class: AppBundle\Email\NewsletterManager
112115
113116
.. code-block:: xml
114117
@@ -123,7 +126,8 @@ Configuration of the service container then looks like this:
123126
<services>
124127
<service id="AppBundle\Email\NewsletterManagerFactory" />
125128
126-
<service id="AppBundle\Email\NewsletterManager">
129+
<service id="AppBundle\Email\NewsletterManager"
130+
class="AppBundle\Email\NewsletterManager">
127131
<!-- call a method on the specified factory service -->
128132
<factory service="AppBundle\Email\NewsletterManagerFactory"
129133
method="createNewsletterManager"
@@ -142,7 +146,7 @@ Configuration of the service container then looks like this:
142146
143147
$container->register(NewsletterManagerFactory::class);
144148
145-
$container->register(NewsletterManager::class)
149+
$container->register(NewsletterManager::class, NewsletterManager::class)
146150
// call a method on the specified factory service
147151
->setFactory(array(
148152
new Reference(NewsletterManagerFactory::class),
@@ -159,6 +163,7 @@ Configuration of the service container then looks like this:
159163
# app/config/services.yml
160164
161165
AppBundle\Email\NewsletterManager:
166+
class: AppBundle\Email\NewsletterManager
162167
# new syntax
163168
factory: 'AppBundle\Email\NewsletterManagerFactory:createNewsletterManager'
164169
# old syntax
@@ -188,6 +193,7 @@ example takes the ``templating`` service as an argument:
188193
# ...
189194
190195
AppBundle\Email\NewsletterManager:
196+
class: AppBundle\Email\NewsletterManager
191197
factory: 'AppBundle\Email\NewsletterManagerFactory:createNewsletterManager'
192198
arguments: ['@templating']
193199
@@ -204,7 +210,8 @@ example takes the ``templating`` service as an argument:
204210
<services>
205211
<!-- ... -->
206212
207-
<service id="AppBundle\Email\NewsletterManager">
213+
<service id="AppBundle\Email\NewsletterManager"
214+
class="AppBundle\Email\NewsletterManager">
208215
<factory service="AppBundle\Email\NewsletterManagerFactory" method="createNewsletterManager"/>
209216
<argument type="service" id="templating"/>
210217
</service>
@@ -220,7 +227,7 @@ example takes the ``templating`` service as an argument:
220227
use Symfony\Component\DependencyInjection\Reference;
221228
222229
// ...
223-
$container->register(NewsletterManager::class)
230+
$container->register(NewsletterManager::class, NewsletterManager::class)
224231
->addArgument(new Reference('templating'))
225232
->setFactory(array(
226233
new Reference(NewsletterManagerFactory::class),

0 commit comments

Comments
 (0)