Skip to content

Commit cd4f88c

Browse files
committed
Merge branch '5.4' into 6.0
* 5.4: Use PHP-DSL `env()` configurator when possible
2 parents 88b5cb7 + af71162 commit cd4f88c

File tree

12 files changed

+50
-34
lines changed

12 files changed

+50
-34
lines changed

configuration.rst

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -639,10 +639,18 @@ This example shows how you could configure the database connection using an env
639639
'dbal' => [
640640
// by convention the env var names are always uppercase
641641
'url' => '%env(resolve:DATABASE_URL)%',
642+
// or
643+
'url' => env('DATABASE_URL')->resolve(),
642644
],
643645
]);
644646
};
645647
648+
.. versionadded:: 5.3
649+
650+
The ``env()`` configurator syntax was introduced in 5.3.
651+
In ``PHP`` configuration files, it will allow to autocomplete methods based
652+
on processors name (i.e. ``env('SOME_VAR')->default('foo')``).
653+
646654
.. seealso::
647655

648656
The values of env vars can only be strings, but Symfony includes some

configuration/env_var_processors.rst

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,18 @@ processor to turn the value of the ``HTTP_PORT`` env var into an integer:
5050
5151
return static function (FrameworkConfig $framework) {
5252
$framework->router()
53+
->httpPort('%env(int:HTTP_PORT)%')
54+
// or
5355
->httpPort(env('HTTP_PORT')->int())
5456
;
5557
};
5658
59+
.. versionadded:: 5.3
60+
61+
The ``env()`` configurator syntax was introduced in 5.3.
62+
In ``PHP`` configuration files, it will allow to autocomplete methods based
63+
on processors name (i.e. ``env('SOME_VAR')->default('foo')``).
64+
5765
Built-In Environment Variable Processors
5866
----------------------------------------
5967

@@ -236,7 +244,7 @@ Symfony provides the following env var processors:
236244
$container->setParameter('env(HEALTH_CHECK_METHOD)', 'Symfony\Component\HttpFoundation\Request::METHOD_HEAD');
237245
$security->accessControl()
238246
->path('^/health-check$')
239-
->methods(['%env(const:HEALTH_CHECK_METHOD)%']);
247+
->methods([env('HEALTH_CHECK_METHOD')->const()]);
240248
};
241249
242250
``env(base64:FOO)``

configuration/secrets.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ If you stored a ``DATABASE_PASSWORD`` secret, you can reference it by:
145145
return static function (DoctrineConfig $doctrine) {
146146
$doctrine->dbal()
147147
->connection('default')
148-
->password('%env(DATABASE_PASSWORD)%')
148+
->password(env('DATABASE_PASSWORD'))
149149
;
150150
};
151151

doctrine/multiple_entity_managers.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,15 +136,15 @@ The following configuration code shows how you can configure two entity managers
136136
// configure these for your database server
137137
$doctrine->dbal()
138138
->connection('default')
139-
->url('%env(resolve:DATABASE_URL)%')
139+
->url(env('DATABASE_URL')->resolve())
140140
->driver('pdo_mysql')
141141
->serverVersion('5.7')
142142
->charset('utf8mb4');
143143
144144
// configure these for your database server
145145
$doctrine->dbal()
146146
->connection('customer')
147-
->url('%env(resolve:DATABASE_CUSTOMER_URL)%')
147+
->url(env('DATABASE_CUSTOMER_URL')->resolve())
148148
->driver('pdo_mysql')
149149
->serverVersion('5.7')
150150
->charset('utf8mb4');

lock.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ this behavior by using the ``lock`` key like:
149149
->resource('default', ['sqlsrv:server=127.0.0.1;Database=app'])
150150
->resource('default', ['oci:host=127.0.0.1;dbname=app'])
151151
->resource('default', ['mongodb://127.0.0.1/app?collection=lock'])
152-
->resource('default', ['%env(LOCK_DSN)%'])
152+
->resource('default', [env('LOCK_DSN')])
153153
154154
// named locks
155155
->resource('invoice', ['semaphore', 'redis://r2.docker'])

mailer.rst

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ over SMTP by configuring the DSN in your ``.env`` file (the ``user``,
6060
return static function (ContainerConfigurator $containerConfigurator): void {
6161
$containerConfigurator->extension('framework', [
6262
'mailer' => [
63-
'dsn' => '%env(MAILER_DSN)%',
63+
'dsn' => env('MAILER_DSN'),
6464
],
6565
]);
6666
};
@@ -1102,8 +1102,8 @@ This can be configured by replacing the ``dsn`` configuration entry with a
11021102
11031103
return static function (FrameworkConfig $framework) {
11041104
$framework->mailer()
1105-
->transport('main', '%env(MAILER_DSN)%')
1106-
->transport('alternative', '%env(MAILER_DSN_IMPORTANT)%')
1105+
->transport('main', env('MAILER_DSN'))
1106+
->transport('alternative', env('MAILER_DSN_IMPORTANT'))
11071107
;
11081108
};
11091109
@@ -1175,7 +1175,7 @@ you have a transport called ``async``, you can route the message there:
11751175
11761176
return static function (FrameworkConfig $framework) {
11771177
$framework->messenger()
1178-
->transport('async')->dsn('%env(MESSENGER_TRANSPORT_DSN)%');
1178+
->transport('async')->dsn(env('MESSENGER_TRANSPORT_DSN'));
11791179
11801180
$framework->messenger()
11811181
->routing('Symfony\Component\Mailer\Messenger\SendEmailMessage')

messenger.rst

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -188,12 +188,12 @@ that uses this configuration:
188188
return static function (FrameworkConfig $framework) {
189189
$framework->messenger()
190190
->transport('async')
191-
->dsn('%env(MESSENGER_TRANSPORT_DSN)%')
191+
->dsn(env('MESSENGER_TRANSPORT_DSN'))
192192
;
193193
194194
$framework->messenger()
195195
->transport('async')
196-
->dsn('%env(MESSENGER_TRANSPORT_DSN)%')
196+
->dsn(env('MESSENGER_TRANSPORT_DSN'))
197197
->options([])
198198
;
199199
};
@@ -583,11 +583,11 @@ different messages to them. For example:
583583
$messenger = $framework->messenger();
584584
585585
$messenger->transport('async_priority_high')
586-
->dsn('%env(MESSENGER_TRANSPORT_DSN)%')
586+
->dsn(env('MESSENGER_TRANSPORT_DSN'))
587587
->options(['queue_name' => 'high']);
588588
589589
$messenger->transport('async_priority_low')
590-
->dsn('%env(MESSENGER_TRANSPORT_DSN)%')
590+
->dsn(env('MESSENGER_TRANSPORT_DSN'))
591591
->options(['queue_name' => 'low']);
592592
593593
$messenger->routing('App\Message\SmsNotification')->senders(['async_priority_low']);
@@ -781,7 +781,7 @@ this is configurable for each transport:
781781
$messenger = $framework->messenger();
782782
783783
$messenger->transport('async_priority_high')
784-
->dsn('%env(MESSENGER_TRANSPORT_DSN)%')
784+
->dsn(env('MESSENGER_TRANSPORT_DSN'))
785785
// default configuration
786786
->retryStrategy()
787787
->maxRetries(3)
@@ -981,7 +981,7 @@ override the failure transport for only specific transports:
981981
$messenger->failureTransport('failed_default');
982982
983983
$messenger->transport('async_priority_high')
984-
->dsn('%env(MESSENGER_TRANSPORT_DSN)%')
984+
->dsn(env('MESSENGER_TRANSPORT_DSN'))
985985
->failureTransport('failed_high_priority');
986986
987987
// since no failed transport is configured, the one used will be
@@ -1069,7 +1069,7 @@ options. Options can be passed to the transport via a DSN string or configuratio
10691069
$messenger = $framework->messenger();
10701070
10711071
$messenger->transport('my_transport')
1072-
->dsn('%env(MESSENGER_TRANSPORT_DSN)%')
1072+
->dsn(env('MESSENGER_TRANSPORT_DSN'))
10731073
->options(['auto_setup' => false]);
10741074
};
10751075

notifier.rst

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ configure the ``texter_transports``:
132132
133133
return static function (FrameworkConfig $framework) {
134134
$framework->notifier()
135-
->texterTransport('twilio', '%env(TWILIO_DSN)%')
135+
->texterTransport('twilio', env('TWILIO_DSN'))
136136
;
137137
};
138138
@@ -210,7 +210,7 @@ Chatters are configured using the ``chatter_transports`` setting:
210210
211211
return static function (FrameworkConfig $framework) {
212212
$framework->notifier()
213-
->chatterTransport('slack', '%env(SLACK_DSN)%')
213+
->chatterTransport('slack', env('SLACK_DSN'))
214214
;
215215
};
216216
@@ -274,7 +274,7 @@ notification emails:
274274
275275
return static function (FrameworkConfig $framework) {
276276
$framework->mailer()
277-
->dsn('%env(MAILER_DSN)%')
277+
->dsn(env('MAILER_DSN'))
278278
->envelope()
279279
->sender('[email protected]')
280280
;
@@ -341,7 +341,7 @@ configure the ``texter_transports``:
341341
342342
return static function (FrameworkConfig $framework) {
343343
$framework->notifier()
344-
->texterTransport('expo', '%env(EXPO_DSN)%')
344+
->texterTransport('expo', env('EXPO_DSN'))
345345
;
346346
};
347347
@@ -405,10 +405,10 @@ transport:
405405
$framework->notifier()
406406
// Send notifications to Slack and use Telegram if
407407
// Slack errored
408-
->chatterTransport('main', '%env(SLACK_DSN)% || %env(TELEGRAM_DSN)%')
408+
->chatterTransport('main', env('SLACK_DSN').' || '.env('TELEGRAM_DSN'))
409409
410410
// Send notifications to the next scheduled transport calculated by round robin
411-
->chatterTransport('roundrobin', '%env(SLACK_DSN)% && %env(TELEGRAM_DSN)%')
411+
->chatterTransport('roundrobin', env('SLACK_DSN').' && '.env('TELEGRAM_DSN'))
412412
;
413413
};
414414

reference/configuration/framework.rst

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,7 @@ some environment variable that stores the name of the IDE/editor:
285285
286286
return static function (FrameworkConfig $framework) {
287287
// the env var stores the IDE/editor name (e.g. 'phpstorm', 'vscode', etc.)
288-
$framework->ide('%env(resolve:CODE_EDITOR)%');
288+
$framework->ide(env('CODE_EDITOR')->resolve());
289289
};
290290
291291
Another alternative is to set the ``xdebug.file_link_format`` option in your
@@ -566,14 +566,14 @@ can also :ref:`disable CSRF protection on individual forms <form-csrf-customizat
566566
.. configuration-block::
567567

568568
.. code-block:: yaml
569-
569+
570570
# config/packages/framework.yaml
571571
framework:
572572
# ...
573573
csrf_protection: true
574-
574+
575575
.. code-block:: xml
576-
576+
577577
<!-- config/packages/framework.xml -->
578578
<?xml version="1.0" encoding="UTF-8" ?>
579579
<container xmlns="http://symfony.com/schema/dic/services"
@@ -587,9 +587,9 @@ can also :ref:`disable CSRF protection on individual forms <form-csrf-customizat
587587
<framework:csrf-protection enabled="true"/>
588588
</framework:config>
589589
</container>
590-
590+
591591
.. code-block:: php
592-
592+
593593
// config/packages/framework.php
594594
use Symfony\Config\FrameworkConfig;
595595
return static function (FrameworkConfig $framework) {
@@ -3072,7 +3072,7 @@ A list of lock stores to be created by the framework extension.
30723072
30733073
return static function (FrameworkConfig $framework) {
30743074
$framework->lock()
3075-
->resource('default', ['%env(LOCK_DSN)%']);
3075+
->resource('default', [env('LOCK_DSN')]);
30763076
};
30773077
30783078
.. seealso::

security/access_control.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,12 +120,12 @@ Take the following ``access_control`` entries as an example:
120120
$security->accessControl()
121121
->path('^/admin')
122122
->roles(['ROLE_USER_IP'])
123-
->ips(['%env(TRUSTED_IPS)%'])
123+
->ips([env('TRUSTED_IPS')])
124124
;
125125
$security->accessControl()
126126
->path('^/admin')
127127
->roles(['ROLE_USER_IP'])
128-
->ips(['127.0.0.1', '::1', '%env(TRUSTED_IPS)%'])
128+
->ips(['127.0.0.1', '::1', env('TRUSTED_IPS')])
129129
;
130130
};
131131

session/database.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ first register a new handler service with your database credentials:
229229
230230
$services->set(PdoSessionHandler::class)
231231
->args([
232-
'%env(DATABASE_URL)%',
232+
env('DATABASE_URL'),
233233
// you can also use PDO configuration, but requires passing two arguments:
234234
// 'mysql:dbname=mydatabase; host=myhost; port=myport',
235235
// ['db_username' => 'myuser', 'db_password' => 'mypassword'],
@@ -329,7 +329,7 @@ passed to the ``PdoSessionHandler`` service:
329329
330330
$services->set(PdoSessionHandler::class)
331331
->args([
332-
'%env(DATABASE_URL)%',
332+
env('DATABASE_URL'),
333333
['db_table' => 'customer_session', 'db_id_col' => 'guid'],
334334
])
335335
;

translation.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -695,7 +695,7 @@ configure the ``providers`` option:
695695
'translator' => [
696696
'providers' => [
697697
'loco' => [
698-
'dsn' => '%env(LOCO_DSN)%',
698+
'dsn' => env('LOCO_DSN'),
699699
'domains' => ['messages'],
700700
'locales' => ['en', 'fr'],
701701
],

0 commit comments

Comments
 (0)