@@ -5,11 +5,6 @@ As you add more functionality to your application, you may well start to have
5
5
related classes that share some of the same dependencies. For example you
6
6
may have a Newsletter Manager which uses setter injection to set its dependencies::
7
7
8
- namespace Acme\HelloBundle\Mail;
9
-
10
- use Acme\HelloBundle\Mailer;
11
- use Acme\HelloBundle\EmailFormatter;
12
-
13
8
class NewsletterManager
14
9
{
15
10
protected $mailer;
@@ -29,11 +24,6 @@ may have a Newsletter Manager which uses setter injection to set its dependencie
29
24
30
25
and also a Greeting Card class which shares the same dependencies::
31
26
32
- namespace Acme\HelloBundle\Mail;
33
-
34
- use Acme\HelloBundle\Mailer;
35
- use Acme\HelloBundle\EmailFormatter;
36
-
37
27
class GreetingCardManager
38
28
{
39
29
protected $mailer;
@@ -57,11 +47,10 @@ The service config for these classes would look something like this:
57
47
58
48
.. code-block :: yaml
59
49
60
- # src/Acme/HelloBundle/Resources/config/services.yml
61
50
parameters :
62
51
# ...
63
- newsletter_manager.class : Acme\HelloBundle\Mail\ NewsletterManager
64
- greeting_card_manager.class : Acme\HelloBundle\Mail\ GreetingCardManager
52
+ newsletter_manager.class : NewsletterManager
53
+ greeting_card_manager.class : GreetingCardManager
65
54
services :
66
55
my_mailer :
67
56
# ...
@@ -81,11 +70,10 @@ The service config for these classes would look something like this:
81
70
82
71
.. code-block :: xml
83
72
84
- <!-- src/Acme/HelloBundle/Resources/config/services.xml -->
85
73
<parameters >
86
74
<!-- ... -->
87
- <parameter key =" newsletter_manager.class" >Acme\HelloBundle\Mail\ NewsletterManager</parameter >
88
- <parameter key =" greeting_card_manager.class" >Acme\HelloBundle\Mail\ GreetingCardManager</parameter >
75
+ <parameter key =" newsletter_manager.class" >NewsletterManager</parameter >
76
+ <parameter key =" greeting_card_manager.class" >GreetingCardManager</parameter >
89
77
</parameters >
90
78
91
79
<services >
@@ -115,13 +103,12 @@ The service config for these classes would look something like this:
115
103
116
104
.. code-block :: php
117
105
118
- // src/Acme/HelloBundle/Resources/config/services.php
119
106
use Symfony\Component\DependencyInjection\Definition;
120
107
use Symfony\Component\DependencyInjection\Reference;
121
108
122
109
// ...
123
- $container->setParameter('newsletter_manager.class', 'Acme\HelloBundle\Mail\ NewsletterManager');
124
- $container->setParameter('greeting_card_manager.class', 'Acme\HelloBundle\Mail\ GreetingCardManager');
110
+ $container->setParameter('newsletter_manager.class', 'NewsletterManager');
111
+ $container->setParameter('greeting_card_manager.class', 'GreetingCardManager');
125
112
126
113
$container->setDefinition('my_mailer', ... );
127
114
$container->setDefinition('my_email_formatter', ... );
@@ -147,11 +134,6 @@ in two places. Likewise if you needed to make changes to the setter methods
147
134
you would need to do this in both classes. The typical way to deal with the
148
135
common methods of these related classes would be to extract them to a super class::
149
136
150
- namespace Acme\HelloBundle\Mail;
151
-
152
- use Acme\HelloBundle\Mailer;
153
- use Acme\HelloBundle\EmailFormatter;
154
-
155
137
abstract class MailManager
156
138
{
157
139
protected $mailer;
@@ -172,17 +154,13 @@ common methods of these related classes would be to extract them to a super clas
172
154
The ``NewsletterManager `` and ``GreetingCardManager `` can then extend this
173
155
super class::
174
156
175
- namespace Acme\HelloBundle\Mail;
176
-
177
157
class NewsletterManager extends MailManager
178
158
{
179
159
// ...
180
160
}
181
161
182
162
and::
183
163
184
- namespace Acme\HelloBundle\Mail;
185
-
186
164
class GreetingCardManager extends MailManager
187
165
{
188
166
// ...
@@ -196,12 +174,11 @@ a parent for a service.
196
174
197
175
.. code-block :: yaml
198
176
199
- # src/Acme/HelloBundle/Resources/config/services.yml
200
177
parameters :
201
178
# ...
202
- newsletter_manager.class : Acme\HelloBundle\Mail\ NewsletterManager
203
- greeting_card_manager.class : Acme\HelloBundle\Mail\ GreetingCardManager
204
- mail_manager.class : Acme\HelloBundle\Mail\ MailManager
179
+ newsletter_manager.class : NewsletterManager
180
+ greeting_card_manager.class : GreetingCardManager
181
+ mail_manager.class : MailManager
205
182
services :
206
183
my_mailer :
207
184
# ...
@@ -224,12 +201,11 @@ a parent for a service.
224
201
225
202
.. code-block :: xml
226
203
227
- <!-- src/Acme/HelloBundle/Resources/config/services.xml -->
228
204
<parameters >
229
205
<!-- ... -->
230
- <parameter key =" newsletter_manager.class" >Acme\HelloBundle\Mail\ NewsletterManager</parameter >
231
- <parameter key =" greeting_card_manager.class" >Acme\HelloBundle\Mail\ GreetingCardManager</parameter >
232
- <parameter key =" mail_manager.class" >Acme\HelloBundle\Mail\ MailManager</parameter >
206
+ <parameter key =" newsletter_manager.class" >NewsletterManager</parameter >
207
+ <parameter key =" greeting_card_manager.class" >GreetingCardManager</parameter >
208
+ <parameter key =" mail_manager.class" >MailManager</parameter >
233
209
</parameters >
234
210
235
211
<services >
@@ -253,14 +229,13 @@ a parent for a service.
253
229
254
230
.. code-block :: php
255
231
256
- // src/Acme/HelloBundle/Resources/config/services.php
257
232
use Symfony\Component\DependencyInjection\Definition;
258
233
use Symfony\Component\DependencyInjection\Reference;
259
234
260
235
// ...
261
- $container->setParameter('newsletter_manager.class', 'Acme\HelloBundle\Mail\ NewsletterManager');
262
- $container->setParameter('greeting_card_manager.class', 'Acme\HelloBundle\Mail\ GreetingCardManager');
263
- $container->setParameter('mail_manager.class', 'Acme\HelloBundle\Mail\ MailManager');
236
+ $container->setParameter('newsletter_manager.class', 'NewsletterManager');
237
+ $container->setParameter('greeting_card_manager.class', 'GreetingCardManager');
238
+ $container->setParameter('mail_manager.class', 'MailManager');
264
239
265
240
$container->setDefinition('my_mailer', ... );
266
241
$container->setDefinition('my_email_formatter', ... );
@@ -316,12 +291,11 @@ to the ``NewsletterManager`` class, the config would look like this:
316
291
317
292
.. code-block :: yaml
318
293
319
- # src/Acme/HelloBundle/Resources/config/services.yml
320
294
parameters :
321
295
# ...
322
- newsletter_manager.class : Acme\HelloBundle\Mail\ NewsletterManager
323
- greeting_card_manager.class : Acme\HelloBundle\Mail\ GreetingCardManager
324
- mail_manager.class : Acme\HelloBundle\Mail\ MailManager
296
+ newsletter_manager.class : NewsletterManager
297
+ greeting_card_manager.class : GreetingCardManager
298
+ mail_manager.class : MailManager
325
299
services :
326
300
my_mailer :
327
301
# ...
@@ -348,12 +322,11 @@ to the ``NewsletterManager`` class, the config would look like this:
348
322
349
323
.. code-block :: xml
350
324
351
- <!-- src/Acme/HelloBundle/Resources/config/services.xml -->
352
325
<parameters >
353
326
<!-- ... -->
354
- <parameter key =" newsletter_manager.class" >Acme\HelloBundle\Mail\ NewsletterManager</parameter >
355
- <parameter key =" greeting_card_manager.class" >Acme\HelloBundle\Mail\ GreetingCardManager</parameter >
356
- <parameter key =" mail_manager.class" >Acme\HelloBundle\Mail\ MailManager</parameter >
327
+ <parameter key =" newsletter_manager.class" >NewsletterManager</parameter >
328
+ <parameter key =" greeting_card_manager.class" >GreetingCardManager</parameter >
329
+ <parameter key =" mail_manager.class" >MailManager</parameter >
357
330
</parameters >
358
331
359
332
<services >
@@ -384,14 +357,13 @@ to the ``NewsletterManager`` class, the config would look like this:
384
357
385
358
.. code-block :: php
386
359
387
- // src/Acme/HelloBundle/Resources/config/services.php
388
360
use Symfony\Component\DependencyInjection\Definition;
389
361
use Symfony\Component\DependencyInjection\Reference;
390
362
391
363
// ...
392
- $container->setParameter('newsletter_manager.class', 'Acme\HelloBundle\Mail\ NewsletterManager');
393
- $container->setParameter('greeting_card_manager.class', 'Acme\HelloBundle\Mail\ GreetingCardManager');
394
- $container->setParameter('mail_manager.class', 'Acme\HelloBundle\Mail\ MailManager');
364
+ $container->setParameter('newsletter_manager.class', 'NewsletterManager');
365
+ $container->setParameter('greeting_card_manager.class', 'GreetingCardManager');
366
+ $container->setParameter('mail_manager.class', 'MailManager');
395
367
396
368
$container->setDefinition('my_mailer', ... );
397
369
$container->setDefinition('my_alternative_mailer', ... );
@@ -435,11 +407,6 @@ method call involves adding something to a collection, then two objects will
435
407
be added to that collection. The following shows such a case, if the parent
436
408
class looks like this::
437
409
438
- namespace Acme\HelloBundle\Mail;
439
-
440
- use Acme\HelloBundle\Mailer;
441
- use Acme\HelloBundle\EmailFormatter;
442
-
443
410
abstract class MailManager
444
411
{
445
412
protected $filters;
@@ -457,11 +424,10 @@ If you had the following config:
457
424
458
425
.. code-block :: yaml
459
426
460
- # src/Acme/HelloBundle/Resources/config/services.yml
461
427
parameters :
462
428
# ...
463
- newsletter_manager.class : Acme\HelloBundle\Mail\ NewsletterManager
464
- mail_manager.class : Acme\HelloBundle\Mail\ MailManager
429
+ newsletter_manager.class : NewsletterManager
430
+ mail_manager.class : MailManager
465
431
services :
466
432
my_filter :
467
433
# ...
@@ -481,11 +447,10 @@ If you had the following config:
481
447
482
448
.. code-block :: xml
483
449
484
- <!-- src/Acme/HelloBundle/Resources/config/services.xml -->
485
450
<parameters >
486
451
<!-- ... -->
487
- <parameter key =" newsletter_manager.class" >Acme\HelloBundle\Mail\ NewsletterManager</parameter >
488
- <parameter key =" mail_manager.class" >Acme\HelloBundle\Mail\ MailManager</parameter >
452
+ <parameter key =" newsletter_manager.class" >NewsletterManager</parameter >
453
+ <parameter key =" mail_manager.class" >MailManager</parameter >
489
454
</parameters >
490
455
491
456
<services >
@@ -509,13 +474,12 @@ If you had the following config:
509
474
510
475
.. code-block :: php
511
476
512
- // src/Acme/HelloBundle/Resources/config/services.php
513
477
use Symfony\Component\DependencyInjection\Definition;
514
478
use Symfony\Component\DependencyInjection\Reference;
515
479
516
480
// ...
517
- $container->setParameter('newsletter_manager.class', 'Acme\HelloBundle\Mail\ NewsletterManager');
518
- $container->setParameter('mail_manager.class', 'Acme\HelloBundle\Mail\ MailManager');
481
+ $container->setParameter('newsletter_manager.class', 'NewsletterManager');
482
+ $container->setParameter('mail_manager.class', 'MailManager');
519
483
520
484
$container->setDefinition('my_filter', ... );
521
485
$container->setDefinition('another_filter', ... );
0 commit comments