Skip to content

Commit be9065f

Browse files
committed
remove service class parameters
1 parent 5db8386 commit be9065f

File tree

12 files changed

+92
-297
lines changed

12 files changed

+92
-297
lines changed

best_practices/business-logic.rst

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -140,12 +140,9 @@ the class namespace as a parameter:
140140
# app/config/services.yml
141141
142142
# service definition with class namespace as parameter
143-
parameters:
144-
slugger.class: AppBundle\Utils\Slugger
145-
146143
services:
147144
app.slugger:
148-
class: "%slugger.class%"
145+
class: AppBundle\Utils\Slugger
149146
150147
This practice is cumbersome and completely unnecessary for your own services:
151148

book/service_container.rst

Lines changed: 22 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -201,12 +201,11 @@ straightforward. Parameters make defining services more organized and flexible:
201201
202202
# app/config/config.yml
203203
parameters:
204-
my_mailer.class: Acme\HelloBundle\Mailer
205204
my_mailer.transport: sendmail
206205
207206
services:
208207
my_mailer:
209-
class: "%my_mailer.class%"
208+
class: Acme\HelloBundle\Mailer
210209
arguments: ["%my_mailer.transport%"]
211210
212211
.. code-block:: xml
@@ -218,12 +217,11 @@ straightforward. Parameters make defining services more organized and flexible:
218217
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
219218
220219
<parameters>
221-
<parameter key="my_mailer.class">Acme\HelloBundle\Mailer</parameter>
222220
<parameter key="my_mailer.transport">sendmail</parameter>
223221
</parameters>
224222
225223
<services>
226-
<service id="my_mailer" class="%my_mailer.class%">
224+
<service id="my_mailer" class="Acme\HelloBundle\Mailer">
227225
<argument>%my_mailer.transport%</argument>
228226
</service>
229227
</services>
@@ -234,19 +232,18 @@ straightforward. Parameters make defining services more organized and flexible:
234232
// app/config/config.php
235233
use Symfony\Component\DependencyInjection\Definition;
236234
237-
$container->setParameter('my_mailer.class', 'Acme\HelloBundle\Mailer');
238235
$container->setParameter('my_mailer.transport', 'sendmail');
239236
240237
$container->setDefinition('my_mailer', new Definition(
241-
'%my_mailer.class%',
238+
'Acme\HelloBundle\Mailer',
242239
array('%my_mailer.transport%')
243240
));
244241
245242
The end result is exactly the same as before - the difference is only in
246-
*how* you defined the service. By surrounding the ``my_mailer.class`` and
247-
``my_mailer.transport`` strings in percent (``%``) signs, the container knows
248-
to look for parameters with those names. When the container is built, it
249-
looks up the value of each parameter and uses it in the service definition.
243+
*how* you defined the service. By surrounding the ``my_mailer.transport``
244+
string in percent (``%``) signs, the container knows to look for a parameter
245+
with that name. When the container is built, it looks up the value of each
246+
parameter and uses it in the service definition.
250247

251248
.. note::
252249

@@ -346,12 +343,11 @@ directories don't exist, create them.
346343
347344
# src/Acme/HelloBundle/Resources/config/services.yml
348345
parameters:
349-
my_mailer.class: Acme\HelloBundle\Mailer
350346
my_mailer.transport: sendmail
351347
352348
services:
353349
my_mailer:
354-
class: "%my_mailer.class%"
350+
class: Acme\HelloBundle\Mailer
355351
arguments: ["%my_mailer.transport%"]
356352
357353
.. code-block:: xml
@@ -363,12 +359,11 @@ directories don't exist, create them.
363359
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
364360
365361
<parameters>
366-
<parameter key="my_mailer.class">Acme\HelloBundle\Mailer</parameter>
367362
<parameter key="my_mailer.transport">sendmail</parameter>
368363
</parameters>
369364
370365
<services>
371-
<service id="my_mailer" class="%my_mailer.class%">
366+
<service id="my_mailer" class="Acme\HelloBundle\Mailer">
372367
<argument>%my_mailer.transport%</argument>
373368
</service>
374369
</services>
@@ -379,11 +374,10 @@ directories don't exist, create them.
379374
// src/Acme/HelloBundle/Resources/config/services.php
380375
use Symfony\Component\DependencyInjection\Definition;
381376
382-
$container->setParameter('my_mailer.class', 'Acme\HelloBundle\Mailer');
383377
$container->setParameter('my_mailer.transport', 'sendmail');
384378
385379
$container->setDefinition('my_mailer', new Definition(
386-
'%my_mailer.class%',
380+
'Acme\HelloBundle\Mailer',
387381
array('%my_mailer.transport%')
388382
));
389383
@@ -606,15 +600,11 @@ the service container gives you a much more appealing option:
606600
.. code-block:: yaml
607601
608602
# src/Acme/HelloBundle/Resources/config/services.yml
609-
parameters:
610-
# ...
611-
newsletter_manager.class: Acme\HelloBundle\Newsletter\NewsletterManager
612-
613603
services:
614604
my_mailer:
615605
# ...
616606
newsletter_manager:
617-
class: "%newsletter_manager.class%"
607+
class: Acme\HelloBundle\Newsletter\NewsletterManager
618608
arguments: ["@my_mailer"]
619609
620610
.. code-block:: xml
@@ -625,16 +615,11 @@ the service container gives you a much more appealing option:
625615
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
626616
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
627617
628-
<parameters>
629-
<!-- ... -->
630-
<parameter key="newsletter_manager.class">Acme\HelloBundle\Newsletter\NewsletterManager</parameter>
631-
</parameters>
632-
633618
<services>
634619
<service id="my_mailer">
635620
<!-- ... -->
636621
</service>
637-
<service id="newsletter_manager" class="%newsletter_manager.class%">
622+
<service id="newsletter_manager" class="Acme\HelloBundle\Newsletter\NewsletterManager">
638623
<argument type="service" id="my_mailer"/>
639624
</service>
640625
</services>
@@ -646,15 +631,9 @@ the service container gives you a much more appealing option:
646631
use Symfony\Component\DependencyInjection\Definition;
647632
use Symfony\Component\DependencyInjection\Reference;
648633
649-
// ...
650-
$container->setParameter(
651-
'newsletter_manager.class',
652-
'Acme\HelloBundle\Newsletter\NewsletterManager'
653-
);
654-
655634
$container->setDefinition('my_mailer', ...);
656635
$container->setDefinition('newsletter_manager', new Definition(
657-
'%newsletter_manager.class%',
636+
'Acme\HelloBundle\Newsletter\NewsletterManager',
658637
array(new Reference('my_mailer'))
659638
));
660639
@@ -702,15 +681,11 @@ Injecting the dependency by the setter method just needs a change of syntax:
702681
.. code-block:: yaml
703682
704683
# src/Acme/HelloBundle/Resources/config/services.yml
705-
parameters:
706-
# ...
707-
newsletter_manager.class: Acme\HelloBundle\Newsletter\NewsletterManager
708-
709684
services:
710685
my_mailer:
711686
# ...
712687
newsletter_manager:
713-
class: "%newsletter_manager.class%"
688+
class: Acme\HelloBundle\Newsletter\NewsletterManager
714689
calls:
715690
- [setMailer, ["@my_mailer"]]
716691
@@ -722,16 +697,11 @@ Injecting the dependency by the setter method just needs a change of syntax:
722697
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
723698
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
724699
725-
<parameters>
726-
<!-- ... -->
727-
<parameter key="newsletter_manager.class">Acme\HelloBundle\Newsletter\NewsletterManager</parameter>
728-
</parameters>
729-
730700
<services>
731701
<service id="my_mailer">
732702
<!-- ... -->
733703
</service>
734-
<service id="newsletter_manager" class="%newsletter_manager.class%">
704+
<service id="newsletter_manager" class="Acme\HelloBundle\Newsletter\NewsletterManager">
735705
<call method="setMailer">
736706
<argument type="service" id="my_mailer" />
737707
</call>
@@ -745,15 +715,9 @@ Injecting the dependency by the setter method just needs a change of syntax:
745715
use Symfony\Component\DependencyInjection\Definition;
746716
use Symfony\Component\DependencyInjection\Reference;
747717
748-
// ...
749-
$container->setParameter(
750-
'newsletter_manager.class',
751-
'Acme\HelloBundle\Newsletter\NewsletterManager'
752-
);
753-
754718
$container->setDefinition('my_mailer', ...);
755719
$container->setDefinition('newsletter_manager', new Definition(
756-
'%newsletter_manager.class%'
720+
'Acme\HelloBundle\Newsletter\NewsletterManager'
757721
))->addMethodCall('setMailer', array(
758722
new Reference('my_mailer'),
759723
));
@@ -779,12 +743,9 @@ it exists and do nothing if it doesn't:
779743
.. code-block:: yaml
780744
781745
# src/Acme/HelloBundle/Resources/config/services.yml
782-
parameters:
783-
# ...
784-
785746
services:
786747
newsletter_manager:
787-
class: "%newsletter_manager.class%"
748+
class: Acme\HelloBundle\Newsletter\NewsletterManager
788749
arguments: ["@?my_mailer"]
789750
790751
.. code-block:: xml
@@ -799,7 +760,7 @@ it exists and do nothing if it doesn't:
799760
<service id="my_mailer">
800761
<!-- ... -->
801762
</service>
802-
<service id="newsletter_manager" class="%newsletter_manager.class%">
763+
<service id="newsletter_manager" class="Acme\HelloBundle\Newsletter\NewsletterManager">
803764
<argument type="service" id="my_mailer" on-invalid="ignore" />
804765
</service>
805766
</services>
@@ -812,15 +773,9 @@ it exists and do nothing if it doesn't:
812773
use Symfony\Component\DependencyInjection\Reference;
813774
use Symfony\Component\DependencyInjection\ContainerInterface;
814775
815-
// ...
816-
$container->setParameter(
817-
'newsletter_manager.class',
818-
'Acme\HelloBundle\Newsletter\NewsletterManager'
819-
);
820-
821776
$container->setDefinition('my_mailer', ...);
822777
$container->setDefinition('newsletter_manager', new Definition(
823-
'%newsletter_manager.class%',
778+
'Acme\HelloBundle\Newsletter\NewsletterManager',
824779
array(
825780
new Reference(
826781
'my_mailer',
@@ -897,7 +852,7 @@ Configuring the service container is easy:
897852
# src/Acme/HelloBundle/Resources/config/services.yml
898853
services:
899854
newsletter_manager:
900-
class: "%newsletter_manager.class%"
855+
class: Acme\HelloBundle\Newsletter\NewsletterManager
901856
arguments: ["@mailer", "@templating"]
902857
903858
.. code-block:: xml
@@ -908,7 +863,7 @@ Configuring the service container is easy:
908863
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
909864
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
910865
911-
<service id="newsletter_manager" class="%newsletter_manager.class%">
866+
<service id="newsletter_manager" class="Acme\HelloBundle\Newsletter\NewsletterManager">
912867
<argument type="service" id="mailer"/>
913868
<argument type="service" id="templating"/>
914869
</service>
@@ -918,7 +873,7 @@ Configuring the service container is easy:
918873
919874
// src/Acme/HelloBundle/Resources/config/services.php
920875
$container->setDefinition('newsletter_manager', new Definition(
921-
'%newsletter_manager.class%',
876+
'Acme\HelloBundle\Newsletter\NewsletterManager',
922877
array(
923878
new Reference('mailer'),
924879
new Reference('templating'),

0 commit comments

Comments
 (0)