Skip to content

Commit d08da50

Browse files
committed
[Components] consistent & complete config examples
Make configuration examples in the components section consistent throughout the different configuration formats. Also fixing several syntax issues.
1 parent 7bb4f34 commit d08da50

File tree

11 files changed

+456
-318
lines changed

11 files changed

+456
-318
lines changed

components/dependency_injection/advanced.rst

Lines changed: 48 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,20 @@ Here is an example:
4242
4343
.. code-block:: xml
4444
45-
<service id="foo" class="Example\Foo" public="false" />
45+
<?xml version="1.0" encoding="UTF-8" ?>
46+
<container xmlns="http://symfony.com/schema/dic/services"
47+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
48+
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
49+
50+
<services>
51+
<service id="foo" class="Example\Foo" public="false" />
52+
</services>
53+
</container>
4654
4755
.. code-block:: php
4856
57+
use Symfony\Component\DependencyInjection\Definition;
58+
4959
$definition = new Definition('Example\Foo');
5060
$definition->setPublic(false);
5161
$container->setDefinition('foo', $definition);
@@ -88,15 +98,22 @@ To create a synthetic service, set ``synthetic`` to ``true``:
8898
8999
.. code-block:: xml
90100
91-
<service id="request"
92-
synthetic="true" />
101+
<?xml version="1.0" encoding="UTF-8" ?>
102+
<container xmlns="http://symfony.com/schema/dic/services"
103+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
104+
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
105+
106+
<services>
107+
<service id="request" synthetic="true" />
108+
</services>
109+
</container>
93110
94111
.. code-block:: php
95112
96113
use Symfony\Component\DependencyInjection\Definition;
97114
98-
// ...
99-
$container->setDefinition('request', new Definition())
115+
$container
116+
->setDefinition('request', new Definition())
100117
->setSynthetic(true);
101118
102119
As you see, only the ``synthetic`` option is set. All other options are only used
@@ -128,14 +145,23 @@ services.
128145
129146
.. code-block:: xml
130147
131-
<service id="foo" class="Example\Foo"/>
148+
<?xml version="1.0" encoding="UTF-8" ?>
149+
<container xmlns="http://symfony.com/schema/dic/services"
150+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
151+
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
152+
153+
<services>
154+
<service id="foo" class="Example\Foo" />
132155
133-
<service id="bar" alias="foo" />
156+
<service id="bar" alias="foo" />
157+
</services>
158+
</container>
134159
135160
.. code-block:: php
136161
137-
$definition = new Definition('Example\Foo');
138-
$container->setDefinition('foo', $definition);
162+
use Symfony\Component\DependencyInjection\Definition;
163+
164+
$container->setDefinition('foo', new Definition('Example\Foo'));
139165
140166
$containerBuilder->setAlias('bar', 'foo');
141167
@@ -173,12 +199,22 @@ the service itself gets loaded. To do so, you can use the ``file`` directive.
173199
174200
.. code-block:: xml
175201
176-
<service id="foo" class="Example\Foo\Bar">
177-
<file>%kernel.root_dir%/src/path/to/file/foo.php</file>
178-
</service>
202+
<?xml version="1.0" encoding="UTF-8" ?>
203+
<container xmlns="http://symfony.com/schema/dic/services"
204+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
205+
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
206+
207+
<services>
208+
<service id="foo" class="Example\Foo\Bar">
209+
<file>%kernel.root_dir%/src/path/to/file/foo.php</file>
210+
</service>
211+
</services>
212+
</container>
179213
180214
.. code-block:: php
181215
216+
use Symfony\Component\DependencyInjection\Definition;
217+
182218
$definition = new Definition('Example\Foo\Bar');
183219
$definition->setFile('%kernel.root_dir%/src/path/to/file/foo.php');
184220
$container->setDefinition('foo', $definition);

components/dependency_injection/compilation.rst

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,6 @@ The XML version of the config would then look like this:
203203
<acme_demo:foo>fooValue</acme_hello:foo>
204204
<acme_demo:bar>barValue</acme_demo:bar>
205205
</acme_demo:config>
206-
207206
</container>
208207
209208
.. note::

components/dependency_injection/configurators.rst

Lines changed: 34 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -155,30 +155,40 @@ The service config for the above classes would look something like this:
155155
156156
.. code-block:: xml
157157
158-
<services>
159-
<service id="my_mailer">
160-
<!-- ... -->
161-
</service>
162-
<service id="email_formatter_manager" class="EmailFormatterManager">
163-
<!-- ... -->
164-
</service>
165-
<service id="email_configurator" class="EmailConfigurator">
166-
<argument type="service" id="email_formatter_manager" />
167-
<!-- ... -->
168-
</service>
169-
<service id="newsletter_manager" class="NewsletterManager">
170-
<call method="setMailer">
171-
<argument type="service" id="my_mailer" />
172-
</call>
173-
<configurator service="email_configurator" method="configure" />
174-
</service>
175-
<service id="greeting_card_manager" class="GreetingCardManager">
176-
<call method="setMailer">
177-
<argument type="service" id="my_mailer" />
178-
</call>
179-
<configurator service="email_configurator" method="configure" />
180-
</service>
181-
</services>
158+
<?xml version="1.0" encoding="UTF-8" ?>
159+
<container xmlns="http://symfony.com/schema/dic/services"
160+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
161+
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
162+
163+
<services>
164+
<service id="my_mailer">
165+
<!-- ... -->
166+
</service>
167+
168+
<service id="email_formatter_manager" class="EmailFormatterManager">
169+
<!-- ... -->
170+
</service>
171+
172+
<service id="email_configurator" class="EmailConfigurator">
173+
<argument type="service" id="email_formatter_manager" />
174+
<!-- ... -->
175+
</service>
176+
177+
<service id="newsletter_manager" class="NewsletterManager">
178+
<call method="setMailer">
179+
<argument type="service" id="my_mailer" />
180+
</call>
181+
<configurator service="email_configurator" method="configure" />
182+
</service>
183+
184+
<service id="greeting_card_manager" class="GreetingCardManager">
185+
<call method="setMailer">
186+
<argument type="service" id="my_mailer" />
187+
</call>
188+
<configurator service="email_configurator" method="configure" />
189+
</service>
190+
</services>
191+
</container>
182192
183193
.. code-block:: php
184194

components/dependency_injection/factories.rst

Lines changed: 70 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -47,18 +47,24 @@ class:
4747
4848
.. code-block:: xml
4949
50-
<parameters>
51-
<!-- ... -->
52-
<parameter key="newsletter_manager.class">NewsletterManager</parameter>
53-
<parameter key="newsletter_factory.class">NewsletterFactory</parameter>
54-
</parameters>
55-
56-
<services>
57-
<service id="newsletter_manager"
58-
class="%newsletter_manager.class%"
59-
factory-class="%newsletter_factory.class%"
60-
factory-method="get"
61-
/>
50+
<?xml version="1.0" encoding="UTF-8" ?>
51+
<container xmlns="http://symfony.com/schema/dic/services"
52+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
53+
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
54+
55+
<parameters>
56+
<!-- ... -->
57+
<parameter key="newsletter_manager.class">NewsletterManager</parameter>
58+
<parameter key="newsletter_factory.class">NewsletterFactory</parameter>
59+
</parameters>
60+
61+
<services>
62+
<service
63+
id="newsletter_manager"
64+
class="%newsletter_manager.class%"
65+
factory-class="%newsletter_factory.class%"
66+
factory-method="get" />
67+
</services>
6268
</services>
6369
6470
.. code-block:: php
@@ -69,13 +75,11 @@ class:
6975
$container->setParameter('newsletter_manager.class', 'NewsletterManager');
7076
$container->setParameter('newsletter_factory.class', 'NewsletterFactory');
7177
72-
$container->setDefinition('newsletter_manager', new Definition(
73-
'%newsletter_manager.class%'
74-
))->setFactoryClass(
75-
'%newsletter_factory.class%'
76-
)->setFactoryMethod(
77-
'get'
78-
);
78+
$definition = new Definition('%newsletter_manager.class%');
79+
$definition->setFactoryClass('%newsletter_factory.class%');
80+
$definition->setFactoryMethod('get');
81+
82+
$container->setDefinition('newsletter_manager', $definition);
7983
8084
When you specify the class to use for the factory (via ``factory_class``)
8185
the method will be called statically. If the factory itself should be instantiated
@@ -100,20 +104,27 @@ In this case, the method (e.g. get) should be changed to be non-static:
100104
101105
.. code-block:: xml
102106
103-
<parameters>
104-
<!-- ... -->
105-
<parameter key="newsletter_manager.class">NewsletterManager</parameter>
106-
<parameter key="newsletter_factory.class">NewsletterFactory</parameter>
107-
</parameters>
108-
109-
<services>
110-
<service id="newsletter_factory" class="%newsletter_factory.class%"/>
111-
<service id="newsletter_manager"
112-
class="%newsletter_manager.class%"
113-
factory-service="newsletter_factory"
114-
factory-method="get"
115-
/>
116-
</services>
107+
<?xml version="1.0" encoding="UTF-8" ?>
108+
<container xmlns="http://symfony.com/schema/dic/services"
109+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
110+
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
111+
112+
<parameters>
113+
<!-- ... -->
114+
<parameter key="newsletter_manager.class">NewsletterManager</parameter>
115+
<parameter key="newsletter_factory.class">NewsletterFactory</parameter>
116+
</parameters>
117+
118+
<services>
119+
<service id="newsletter_factory" class="%newsletter_factory.class%"/>
120+
121+
<service
122+
id="newsletter_manager"
123+
class="%newsletter_manager.class%"
124+
factory-service="newsletter_factory"
125+
factory-method="get" />
126+
</services>
127+
</container>
117128
118129
.. code-block:: php
119130
@@ -137,7 +148,8 @@ In this case, the method (e.g. get) should be changed to be non-static:
137148
.. note::
138149

139150
The factory service is specified by its id name and not a reference to
140-
the service itself. So, you do not need to use the @ syntax.
151+
the service itself. So, you do not need to use the @ syntax for this in
152+
YAML configurations.
141153

142154
Passing Arguments to the Factory Method
143155
---------------------------------------
@@ -166,22 +178,30 @@ in the previous example takes the ``templating`` service as an argument:
166178
167179
.. code-block:: xml
168180
169-
<parameters>
170-
<!-- ... -->
171-
<parameter key="newsletter_manager.class">NewsletterManager</parameter>
172-
<parameter key="newsletter_factory.class">NewsletterFactory</parameter>
173-
</parameters>
174-
175-
<services>
176-
<service id="newsletter_factory" class="%newsletter_factory.class%"/>
177-
<service id="newsletter_manager"
178-
class="%newsletter_manager.class%"
179-
factory-service="newsletter_factory"
180-
factory-method="get"
181-
>
182-
<argument type="service" id="templating" />
183-
</service>
184-
</services>
181+
<?xml version="1.0" encoding="UTF-8" ?>
182+
<container xmlns="http://symfony.com/schema/dic/services"
183+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
184+
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
185+
186+
<parameters>
187+
<!-- ... -->
188+
<parameter key="newsletter_manager.class">NewsletterManager</parameter>
189+
<parameter key="newsletter_factory.class">NewsletterFactory</parameter>
190+
</parameters>
191+
192+
<services>
193+
<service id="newsletter_factory" class="%newsletter_factory.class%"/>
194+
195+
<service
196+
id="newsletter_manager"
197+
class="%newsletter_manager.class%"
198+
factory-service="newsletter_factory"
199+
factory-method="get">
200+
201+
<argument type="service" id="templating" />
202+
</service>
203+
</services>
204+
</container>
185205
186206
.. code-block:: php
187207

components/dependency_injection/introduction.rst

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -244,22 +244,28 @@ config files:
244244
245245
.. code-block:: xml
246246
247-
<parameters>
248-
<!-- ... -->
249-
<parameter key="mailer.transport">sendmail</parameter>
250-
</parameters>
251-
252-
<services>
253-
<service id="mailer" class="Mailer">
254-
<argument>%mailer.transport%</argument>
255-
</service>
256-
257-
<service id="newsletter_manager" class="NewsletterManager">
258-
<call method="setMailer">
259-
<argument type="service" id="mailer" />
260-
</call>
261-
</service>
262-
</services>
247+
<?xml version="1.0" encoding="UTF-8" ?>
248+
<container xmlns="http://symfony.com/schema/dic/services"
249+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
250+
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
251+
252+
<parameters>
253+
<!-- ... -->
254+
<parameter key="mailer.transport">sendmail</parameter>
255+
</parameters>
256+
257+
<services>
258+
<service id="mailer" class="Mailer">
259+
<argument>%mailer.transport%</argument>
260+
</service>
261+
262+
<service id="newsletter_manager" class="NewsletterManager">
263+
<call method="setMailer">
264+
<argument type="service" id="mailer" />
265+
</call>
266+
</service>
267+
</services>
268+
</container>
263269
264270
.. code-block:: php
265271

components/dependency_injection/lazy_services.rst

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,20 @@ You can mark the service as ``lazy`` by manipulating its definition:
6262
6363
.. code-block:: xml
6464
65-
<service id="foo" class="Acme\Foo" lazy="true" />
65+
<?xml version="1.0" encoding="UTF-8" ?>
66+
<container xmlns="http://symfony.com/schema/dic/services"
67+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
68+
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
69+
70+
<services>
71+
<service id="foo" class="Acme\Foo" lazy="true" />
72+
</services>
73+
</container>
6674
6775
.. code-block:: php
6876
77+
use Symfony\Component\DependencyInjection\Definition;
78+
6979
$definition = new Definition('Acme\Foo');
7080
$definition->setLazy(true);
7181
$container->setDefinition('foo', $definition);

0 commit comments

Comments
 (0)