@@ -81,8 +81,8 @@ Configuration
81
81
Use Environment Variables for Infrastructure Configuration
82
82
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
83
83
84
- The values of these options change from one machine to another (e.g. from your
85
- development machine to the production server) but they don't modify the
84
+ The values of these options change from one machine to another (e.g., from your
85
+ development machine to the production server), but they don't modify the
86
86
application behavior.
87
87
88
88
:ref: `Use env vars in your project <config-env-vars >` to define these options
@@ -93,7 +93,7 @@ and create multiple ``.env`` files to :ref:`configure env vars per environment <
93
93
Use Secrets for Sensitive Information
94
94
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
95
95
96
- When your application has sensitive configuration - like an API key - you should
96
+ When your application has sensitive configuration, like an API key, you should
97
97
store those securely via :doc: `Symfony’s secrets management system </configuration/secrets >`.
98
98
99
99
Use Parameters for Application Configuration
@@ -119,7 +119,7 @@ Then, use just one or two words to describe the purpose of the parameter:
119
119
120
120
# config/services.yaml
121
121
parameters :
122
- # don't do this: 'dir' is too generic and it doesn't convey any meaning
122
+ # don't do this: 'dir' is too generic, and it doesn't convey any meaning
123
123
app.dir : ' ...'
124
124
# do this: short but easy to understand names
125
125
app.contents_dir : ' ...'
@@ -164,7 +164,7 @@ InvoiceBundle, etc. However, a bundle is meant to be something that can be
164
164
reused as a stand-alone piece of software.
165
165
166
166
If you need to reuse some feature in your projects, create a bundle for it (in a
167
- private repository, to not make it publicly available). For the rest of your
167
+ private repository, do not make it publicly available). For the rest of your
168
168
application code, use PHP namespaces to organize code instead of bundles.
169
169
170
170
Use Autowiring to Automate the Configuration of Application Services
@@ -186,14 +186,14 @@ Services Should be Private Whenever Possible
186
186
those services via ``$container->get() ``. Instead, you will need to use proper
187
187
dependency injection.
188
188
189
- Use the YAML Format to Configure your Own Services
189
+ Use the YAML Format to Configure your own Services
190
190
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
191
191
192
192
If you use the :ref: `default services.yaml configuration <service-container-services-load-example >`,
193
193
most services will be configured automatically. However, in some edge cases
194
194
you'll need to configure services (or parts of them) manually.
195
195
196
- YAML is the format recommended to configure services because it's friendly to
196
+ YAML is the format recommended configuring services because it's friendly to
197
197
newcomers and concise, but Symfony also supports XML and PHP configuration.
198
198
199
199
Use Attributes to Define the Doctrine Entity Mapping
@@ -228,13 +228,13 @@ important parts of your application.
228
228
229
229
.. _best-practice-controller-annotations :
230
230
231
- Use Attributes or Annotations to Configure Routing, Caching and Security
231
+ Use Attributes or Annotations to Configure Routing, Caching, and Security
232
232
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
233
233
234
- Using attributes or annotations for routing, caching and security simplifies
234
+ Using attributes or annotations for routing, caching, and security simplifies
235
235
configuration. You don't need to browse several files created with different
236
- formats (YAML, XML, PHP): all the configuration is just where you need it and
237
- it only uses one format.
236
+ formats (YAML, XML, PHP): all the configuration is just where you require it,
237
+ and it only uses one format.
238
238
239
239
Don't Use Annotations to Configure the Controller Template
240
240
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -271,7 +271,7 @@ Templates
271
271
Use Snake Case for Template Names and Variables
272
272
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
273
273
274
- Use lowercase snake_case for template names, directories and variables (e.g.
274
+ Use lowercase snake_case for template names, directories, and variables (e.g.,
275
275
``user_profile `` instead of ``userProfile `` and ``product/edit_form.html.twig ``
276
276
instead of ``Product/EditForm.html.twig ``).
277
277
@@ -280,7 +280,7 @@ Prefix Template Fragments with an Underscore
280
280
281
281
Template fragments, also called *"partial templates" *, allow to
282
282
:ref: `reuse template contents <templates-reuse-contents >`. Prefix their names
283
- with an underscore to better differentiate them from complete templates (e.g.
283
+ with an underscore to better differentiate them from complete templates (e.g.,
284
284
``_user_metadata.html.twig `` or ``_caution_message.html.twig ``).
285
285
286
286
Forms
@@ -289,7 +289,7 @@ Forms
289
289
Define your Forms as PHP Classes
290
290
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
291
291
292
- Creating :ref: `forms in classes <creating-forms-in-classes >` allows to reuse
292
+ Creating :ref: `forms in classes <creating-forms-in-classes >` allows reusing
293
293
them in different parts of the application. Besides, not creating forms in
294
294
controllers simplify the code and maintenance of the controllers.
295
295
@@ -301,7 +301,7 @@ button of a form used to both create and edit items should change from "Add new"
301
301
to "Save changes" depending on where it's used.
302
302
303
303
Instead of adding buttons in form classes or the controllers, it's recommended
304
- to add buttons in the templates. This also improves the separation of concerns,
304
+ to add buttons in the templates. This also improves the separation of concerns
305
305
because the button styling (CSS class and other attributes) is defined in the
306
306
template instead of in a PHP class.
307
307
@@ -323,7 +323,7 @@ Use a Single Action to Render and Process the Form
323
323
324
324
:ref: `Rendering forms <rendering-forms >` and :ref: `processing forms <processing-forms >`
325
325
are two of the main tasks when handling forms. Both are too similar (most of the
326
- times , almost identical), so it's much simpler to let a single controller action
326
+ time , almost identical), so it's much simpler to let a single controller action
327
327
handle both.
328
328
329
329
.. _best-practice-internationalization :
@@ -347,8 +347,8 @@ Use Keys for Translations Instead of Content Strings
347
347
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
348
348
349
349
Using keys simplifies the management of the translation files because you can
350
- change the original contents in templates, controllers and services without
351
- having to update all of the translation files.
350
+ change the original contents in templates, controllers, and services without
351
+ having to update all the translation files.
352
352
353
353
Keys should always describe their *purpose * and *not * their location. For
354
354
example, if a form has a field with the label "Username", then a nice key
@@ -361,7 +361,7 @@ Define a Single Firewall
361
361
~~~~~~~~~~~~~~~~~~~~~~~~
362
362
363
363
Unless you have two legitimately different authentication systems and users
364
- (e.g. form login for the main site and a token system for your API only), it's
364
+ (e.g., form login for the main site and a token system for your API only), it's
365
365
recommended to have only one firewall to keep things simple.
366
366
367
367
Additionally, you should use the ``anonymous `` key under your firewall. If you
@@ -389,13 +389,13 @@ Web Assets
389
389
Use Webpack Encore to Process Web Assets
390
390
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
391
391
392
- Web assets are things like CSS, JavaScript and image files that make the
393
- frontend of your site looks and works great. `Webpack `_ is the leading JavaScript
392
+ Web assets are things like CSS, JavaScript, and image files that make the
393
+ frontend of your site look and work great. `Webpack `_ is the leading JavaScript
394
394
module bundler that compiles, transforms and packages assets for usage in a browser.
395
395
396
396
:doc: `Webpack Encore </frontend >` is a JavaScript library that gets rid of most
397
397
of Webpack complexity without hiding any of its features or distorting its usage
398
- and philosophy. It was originally created for Symfony applications, but it works
398
+ and philosophy. It was created for Symfony applications, but it works
399
399
for any application using any technology.
400
400
401
401
Tests
@@ -453,7 +453,7 @@ public URL changes, users won't be able to browse it unless you set up a
453
453
redirection to the new URL.
454
454
455
455
That's why it's recommended to use raw URLs in tests instead of generating them
456
- from routes. Whenever a route changes, tests will fail and you'll know that
456
+ from routes. Whenever a route changes, tests will fail, and you'll know that
457
457
you must set up a redirection.
458
458
459
459
.. _`Symfony Demo` : https://github.com/symfony/demo
0 commit comments