Skip to content

Commit f654343

Browse files
committed
Merge branch '3.4'
* 3.4: (42 commits) [#8273] fix bundle registration code [#8273] minor rewording Reworded the built-in web server articles for Symfony 3.3 fix diff code block highlighting [#8269] minor rewording [Console] Commands auto-registration is deprecated [#8231] fix reStructuredText syntax Specified import order of config files [#7981] revert some changes Update upload_file.rst Update usage.rst Update doctrine.rst Update usage.rst [#8260] add missing redirection map entry Delete use_virtuals_forms.rst Added a missing redirection Update validation_group_service_resolver.rst Update redirection_map Update button_based_validation.rst Delete group_service_resolver.rst ...
2 parents ac970b2 + 18ec40a commit f654343

30 files changed

+180
-130
lines changed

_build/redirection_map

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,7 @@
262262
/cookbook/upgrade/minor_version /setup/upgrade_major
263263
/cookbook/upgrade/patch_version /upgrade/bundles
264264
/cookbook/validation/custom_constraint /validation/custom_constraint
265-
/cookbook/validation/group_service_resolver /validation/group_service_resolver
265+
/cookbook/validation/group_service_resolver /form/validation_group_service_resolver
266266
/cookbook/validation/index /validation
267267
/cookbook/validation/severity /validation/severity
268268
/cookbook/web_server/built_in /setup/built_in_web_server
@@ -287,6 +287,7 @@
287287
/components/debug/introduction /components/debug
288288
/components/debug/index /components/debug
289289
/components/dependency_injection/advanced /service_container/alias_private
290+
/components/dependency_injection/autowiring /service_container/autowiring
290291
/components/dependency_injection/definitions /service_container/definitions
291292
/components/dependency_injection/introduction /components/dependency_injection
292293
/components/dependency_injection/index /components/dependency_injection
@@ -310,6 +311,7 @@
310311
/components/form/type_guesser /form/type_guesser
311312
/components/http_foundation/index /components/http_foundation
312313
/components/http_foundation/introduction /components/http_foundation
314+
/components/http_foundation/trusting_proxies /request/load_balancer_reverse_proxy
313315
/components/http_kernel/introduction /components/http_kernel
314316
/components/http_kernel/index /components/http_kernel
315317
/components/property_access/introduction /components/property_access
@@ -331,11 +333,11 @@
331333
/components/yaml/index /components/yaml
332334
/deployment/tools /deployment
333335
/install/bundles /setup/bundles
334-
/form /forms
335-
/testing/simulating_authentication /testing/http_authentication
336-
/components/dependency_injection/autowiring /service_container/autowiring
337336
/event_dispatcher/class_extension /event_dispatcher
337+
/form /forms
338+
/form/use_virtual_forms /form/inherit_data_option
338339
/security/target_path /security
339340
/service_container/third_party /service_container
340341
/templating/templating_service /templates
341-
/components/http_foundation/trusting_proxies /request/load_balancer_reverse_proxy
342+
/testing/simulating_authentication /testing/http_authentication
343+
/validation/group_service_resolver /form/validation_group_service_resolver

components/console/single_command_tool.rst

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,8 @@ Of course, you can still register a command as usual::
3939
<?php
4040
require __DIR__.'/vendor/autoload.php';
4141

42-
use Symfony\Component\Console\Application;
43-
use Symfony\Component\Console\Input\InputArgument;
44-
use Symfony\Component\Console\Input\InputInterface;
45-
use Symfony\Component\Console\Input\InputOption;
46-
use Symfony\Component\Console\Output\OutputInterface;
47-
4842
use Acme\Command\DefaultCommand;
43+
use Symfony\Component\Console\Application;
4944

5045
$application = new Application('echo', '1.0.0');
5146
$command = new DefaultCommand();

components/filesystem.rst

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,13 @@ On POSIX filesystems, directories are created with a default mode value
6464

6565
This function ignores already existing directories.
6666

67+
.. note::
68+
69+
The directory permissions are affected by the current `umask`_.
70+
Set the umask for your webserver, use PHP's :phpfunction:`umask`
71+
function or use the :phpfunction:`chmod` function after the
72+
directory has been created.
73+
6774
exists
6875
~~~~~~
6976

@@ -320,3 +327,4 @@ Learn More
320327
filesystem/*
321328

322329
.. _`Packagist`: https://packagist.org/packages/symfony/filesystem
330+
.. _`umask`: https://en.wikipedia.org/wiki/Umask

components/phpunit_bridge.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -224,14 +224,14 @@ If you have this kind of time-related tests::
224224
sleep(10);
225225
$duration = $stopwatch->stop('event_name')->getDuration();
226226

227-
$this->assertEquals(10, $duration);
227+
$this->assertEquals(10000, $duration);
228228
}
229229
}
230230

231231
You used the :doc:`Symfony Stopwatch Component </components/stopwatch>` to
232232
calculate the duration time of your process, here 10 seconds. However, depending
233233
on the load of the server or the processes running on your local machine, the
234-
``$duration`` could for example be `10.000023s` instead of `10s`.
234+
``$duration`` could for example be ``10.000023s`` instead of ``10s``.
235235

236236
This kind of tests are called transient tests: they are failing randomly
237237
depending on spurious and external circumstances. They are often cause trouble

components/serializer.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -418,9 +418,9 @@ and :class:`Symfony\\Component\\Serializer\\Normalizer\\PropertyNormalizer`::
418418
$obj->name = 'Acme Inc.';
419419
$obj->address = '123 Main Street, Big City';
420420

421-
$json = $serializer->serialize($obj);
421+
$json = $serializer->serialize($obj, 'json');
422422
// {"org_name": "Acme Inc.", "org_address": "123 Main Street, Big City"}
423-
$objCopy = $serializer->deserialize($json);
423+
$objCopy = $serializer->deserialize($json, Company::class, 'json');
424424
// Same data as $obj
425425

426426
.. _using-camelized-method-names-for-underscored-attributes:

console.rst

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ use it to create your own commands.
1212
Creating a Command
1313
------------------
1414

15-
Commands are defined in classes which must be created in the ``Command`` namespace
16-
of your bundle (e.g. ``AppBundle\Command``) and their names must end with the
15+
Commands are defined in classes which should be created in the ``Command`` namespace
16+
of your bundle (e.g. ``AppBundle\Command``) and their names should end with the
1717
``Command`` suffix.
1818

19-
For example, a command called ``CreateUser`` must follow this structure::
19+
For example, you may want a command to create a user::
2020

2121
// src/AppBundle/Command/CreateUserCommand.php
2222
namespace AppBundle\Command;
@@ -64,12 +64,28 @@ method. Then you can optionally define a help message and the
6464
Executing the Command
6565
---------------------
6666

67-
After configuring the command, you can execute it in the terminal:
67+
Symfony registers any PHP class extending :class:`Symfony\\Component\\Console\\Command\\Command`
68+
as a console command automatically. So you can now execute this command in the
69+
terminal:
6870

6971
.. code-block:: terminal
7072
7173
$ php bin/console app:create-user
7274
75+
.. note::
76+
77+
If you're using the :ref:`default services.yml configuration <service-container-services-load-example>`,
78+
your command classes are automatically registered as services.
79+
80+
You can also manually register your command as a service by configuring the service
81+
and :doc:`tagging it </service_container/tags>` with ``console.command``.
82+
83+
.. caution::
84+
85+
Symfony also looks in the ``Command/`` directory of bundles for commands
86+
that are not registered as a service. But this auto discovery is deprecated
87+
since Symfony 3.4 and won't be supported anymore in Symfony 4.0.
88+
7389
As you might expect, this command will do nothing as you didn't write any logic
7490
yet. Add your own logic inside the ``execute()`` method, which has access to the
7591
input stream (e.g. options and arguments) and the output stream (to write

console/commands_as_services.rst

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,13 @@ How to Define Commands as Services
55
==================================
66

77
If you're using the :ref:`default services.yml configuration <service-container-services-load-example>`,
8-
your command classes are already registered as services. Great! This is the recommended
9-
setup, but it's not required. Symfony also looks in the ``Command/`` directory of
10-
each bundle and automatically registers those classes as commands.
8+
your command classes are already registered as services. Great! This is the
9+
recommended setup.
10+
11+
Symfony also looks in the ``Command/`` directory of each bundle for commands
12+
non registered as a service and automatically registers those classes as
13+
commands. However this auto-registration was deprecated in Symfony 3.4. In
14+
Symfony 4.0, commands won't be auto-registered anymore.
1115

1216
.. note::
1317

controller/upload_file.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -329,6 +329,7 @@ automatically upload the file when persisting the entity::
329329
class BrochureUploadListener
330330
{
331331
private $uploader;
332+
private $fileName;
332333

333334
public function __construct(FileUploader $uploader)
334335
{
@@ -359,11 +360,10 @@ automatically upload the file when persisting the entity::
359360
$file = $entity->getBrochure();
360361

361362
// only upload new files
362-
if (!$file instanceof UploadedFile) {
363-
return;
363+
if ($file instanceof UploadedFile) {
364+
$fileName = $this->uploader->upload($file);
364365
}
365366

366-
$fileName = $this->uploader->upload($file);
367367
$entity->setBrochure($fileName);
368368
}
369369
}

deployment/platformsh.rst

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,12 +126,14 @@ following file (it's your role to add this file to your code base)::
126126
# Store session into /tmp.
127127
ini_set('session.save_path', '/tmp/sessions');
128128

129-
Make sure this file is listed in your *imports*:
129+
Make sure this file is listed in your *imports* (after the default ``parameters.yml``
130+
file):
130131

131132
.. code-block:: yaml
132133
133134
# app/config/config.yml
134135
imports:
136+
- { resource: parameters.yml }
135137
- { resource: parameters_platform.php }
136138
137139
Deploy your Application

doctrine.rst

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -539,17 +539,17 @@ Take a look at the previous example in more detail:
539539

540540
.. _doctrine-entity-manager:
541541

542-
* **line 13** The ``$this->getDoctrine()->getManager()`` method gets Doctrine's
542+
* **line 12** The ``$this->getDoctrine()->getManager()`` method gets Doctrine's
543543
*entity manager* object, which is the most important object in Doctrine. It's
544544
responsible for saving objects to, and fetching objects from, the database.
545545

546-
* **lines 15-18** In this section, you instantiate and work with the ``$product``
546+
* **lines 14-17** In this section, you instantiate and work with the ``$product``
547547
object like any other normal PHP object.
548548

549-
* **line 21** The ``persist($product)`` call tells Doctrine to "manage" the
549+
* **line 20** The ``persist($product)`` call tells Doctrine to "manage" the
550550
``$product`` object. This does **not** cause a query to be made to the database.
551551

552-
* **line 24** When the ``flush()`` method is called, Doctrine looks through
552+
* **line 23** When the ``flush()`` method is called, Doctrine looks through
553553
all of the objects that it's managing to see if they need to be persisted
554554
to the database. In this example, the ``$product`` object's data doesn't
555555
exist in the database, so the entity manager executes an ``INSERT`` query,

0 commit comments

Comments
 (0)