Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitea5e1b2

Browse files
committed
[symfony#2110] Tweaking new service configuration document - minor stuff, also removing parameter use in examples for simplicity
1 parent5c3f100 commitea5e1b2

File tree

1 file changed

+32
-43
lines changed

1 file changed

+32
-43
lines changed

‎components/dependency_injection/configurators.rst

Lines changed: 32 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ creation.
1515
A Service Configurator can be used, for example, when you a have a service that
1616
requires complex setup based on configuration settings coming from different
1717
sources/services. Using an external configurator, you can maintain the service
18-
implementationclean and decoupled from the other objects that provide the
19-
configuration fortheservice.
18+
implementationcleanly andkeep itdecoupled from the other objects that provide
19+
theconfiguration needed.
2020

2121
Another interesting use case is when you have multiple objects that share a
2222
common configuration or that should be configured in a similar way at runtime.
@@ -66,17 +66,22 @@ and also a ``GreetingCardManager`` class::
6666
}
6767

6868

69-
As commented before, the formatters should be set at runtime depending on
70-
application settings, so we also have a ``EmailFormatterManager`` class which is
71-
responsible for loading and validating formatters enabled in the application::
69+
As mentioned before, the goal is to set the formatters at runtime depending on
70+
application settings. To do this, you also have an ``EmailFormatterManager``
71+
class which is responsible for loading and validating formatters enabled
72+
in the application::
7273

7374
class EmailFormatterManager
7475
{
7576
protected $enabledFormatters;
7677

7778
public function loadFormatters()
7879
{
80+
// code to configure which formatters to use
81+
$enabledFormatters = array();
7982
// ...
83+
84+
$this->enabledFormatters = $enabledFormatters;
8085
}
8186

8287
public function getEnabledFormatters()
@@ -110,7 +115,7 @@ create a configurator class to configure these instances::
110115
// ...
111116
}
112117

113-
``EmailConfigurator`` task is to inject enabled filtersto ``NewsletterManager``
118+
The``EmailConfigurator``'s job is to injecttheenabled filtersinto ``NewsletterManager``
114119
and ``GreetingCardManager`` because they are not aware of where the enabled
115120
filters come from. In the other hand, the ``EmailFormatterManager`` holds the
116121
knowledge about the enabled formatters and how to load them, keeping the single
@@ -125,67 +130,52 @@ The service config for the above classes would look something like this:
125130

126131
..code-block::yaml
127132
128-
parameters:
129-
# ...
130-
newsletter_manager.class:NewsletterManager
131-
greeting_card_manager.class:GreetingCardManager
132-
email_formatter_manager.class:EmailFormatterManager
133-
email_configurator.class:EmailConfigurator
134-
135133
services:
136134
my_mailer:
137135
# ...
138136
139137
email_formatter_manager:
140-
class:"%email_formatter_manager.class%"
138+
class:EmailFormatterManager
141139
# ...
142140
143141
email_configurator:
144-
class:"%email_configurator.class%"
145-
arguments:[@email_formatter_manager]
142+
class:EmailConfigurator
143+
arguments:["@email_formatter_manager"]
146144
# ...
147145
148146
newsletter_manager:
149-
class:"%newsletter_manager.class%"
147+
class:NewsletterManager
150148
calls:
151-
-[setMailer, [@my_mailer]]
152-
configurator:[@email_configurator, configure]
149+
-[setMailer, ["@my_mailer"]]
150+
configurator:["@email_configurator", configure]
153151
154152
greeting_card_manager:
155-
class:"%greeting_card_manager.class%"
153+
class:GreetingCardManager
156154
calls:
157-
-[setMailer, [@my_mailer]]
158-
configurator:[@email_configurator, configure]
155+
-[setMailer, ["@my_mailer"]]
156+
configurator:["@email_configurator", configure]
159157
160158
161159
..code-block::xml
162160
163-
<parameters>
164-
<!-- ...-->
165-
<parameterkey="newsletter_manager.class">NewsletterManager</parameter>
166-
<parameterkey="greeting_card_manager.class">GreetingCardManager</parameter>
167-
<parameterkey="email_formatter_manager.class">EmailFormatterManager</parameter>
168-
<parameterkey="email_configurator.class">EmailConfigurator</parameter>
169-
</parameters>
170-
171161
<services>
172162
<serviceid="my_mailer" ...>
173163
<!-- ...-->
174164
</service>
175-
<serviceid="email_formatter_manager"class="%email_formatter_manager.class%">
165+
<serviceid="email_formatter_manager"class="EmailFormatterManager">
176166
<!-- ...-->
177167
</service>
178-
<serviceid="email_configurator"class="%email_configurator.class%">
168+
<serviceid="email_configurator"class="EmailConfigurator">
179169
<argumenttype="service"id="email_formatter_manager" />
180170
<!-- ...-->
181171
</service>
182-
<serviceid="newsletter_manager"class="%newsletter_manager.class%">
172+
<serviceid="newsletter_manager"class="NewsletterManager">
183173
<callmethod="setMailer">
184174
<argumenttype="service"id="my_mailer" />
185175
</call>
186176
<configuratorservice="email_configurator"method="configure" />
187177
</service>
188-
<serviceid="greeting_card_manager"class="%greeting_card_manager.class%">
178+
<serviceid="greeting_card_manager"class="GreetingCardManager">
189179
<callmethod="setMailer">
190180
<argumenttype="service"id="my_mailer" />
191181
</call>
@@ -199,24 +189,23 @@ The service config for the above classes would look something like this:
199189
use Symfony\Component\DependencyInjection\Reference;
200190
201191
// ...
202-
$container->setParameter('newsletter_manager.class', 'NewsletterManager');
203-
$container->setParameter('greeting_card_manager.class', 'GreetingCardManager');
204-
$container->setParameter('email_formatter_manager.class', 'EmailFormatterManager');
205-
$container->setParameter('email_configurator.class', 'EmailConfigurator');
206-
207192
$container->setDefinition('my_mailer', ...);
208-
$container->setDefinition('email_formatter_manager', ...);
209-
$container->setDefinition('email_configurator', ...);
193+
$container->setDefinition('email_formatter_manager', new Definition(
194+
'EmailFormatterManager'
195+
));
196+
$container->setDefinition('email_configurator', new Definition(
197+
'EmailConfigurator'
198+
));
210199
$container->setDefinition('newsletter_manager', new Definition(
211-
'%newsletter_manager.class%'
200+
'NewsletterManager'
212201
))->addMethodCall('setMailer', array(
213202
new Reference('my_mailer'),
214203
))->setConfigurator(array(
215204
new Reference('email_configurator'),
216205
'configure',
217206
)));
218207
$container->setDefinition('greeting_card_manager', new Definition(
219-
'%greeting_card_manager.class%'
208+
'GreetingCardManager'
220209
))->addMethodCall('setMailer', array(
221210
new Reference('my_mailer'),
222211
))->setConfigurator(array(

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp