This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
Go to file
Fabien Potencier 3cde49c084 minor #41004 [FrameworkBundle] Use more explicite wording for debug:container command (lyrixx)
This PR was merged into the 5.3-dev branch.

Discussion
----------

[FrameworkBundle] Use more explicite wording for debug:container command

| Q             | A
| ------------- | ---
| Branch?       | 5.x
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

I spent too much time debugging something stupid (in my app) and I do think Symfony could do better to help.
In the application, there was:

```yaml
services:
    _defaults:
        autoconfigure: true

    get_set_method_normalizer:
        class: Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer
        tags:
            - { name: serializer.normalizer }
```

And I had to edit the priority. To ensure everything was right, I ran:

```
Symfony Container Services Tagged with "serializer.normalizer" Tag
==================================================================

 ------------------------------------------------------------ ---------- ---------------------------------------------------------------------------
  Service ID                                                   priority   Class name
 ------------------------------------------------------------ ---------- ---------------------------------------------------------------------------
  Symfony\Component\Serializer\Normalizer\DateTimeNormalizer   1          Symfony\Component\Serializer\Normalizer\DateTimeNormalizer
  App\Serializer\Normalizer\JsonApiItemNormalizer                         App\Serializer\Normalizer\JsonApiItemNormalizer
  get_set_method_normalizer                                               Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer
    "                                                          -900
  serializer.normalizer.constraint_violation_list              -915       Symfony\Component\Serializer\Normalizer\ConstraintViolationListNormalizer
  serializer.normalizer.datetimezone                           -915       Symfony\Component\Serializer\Normalizer\DateTimeZoneNormalizer
  serializer.normalizer.dateinterval                           -915       Symfony\Component\Serializer\Normalizer\DateIntervalNormalizer
  serializer.normalizer.data_uri                               -920       Symfony\Component\Serializer\Normalizer\DataUriNormalizer
  serializer.normalizer.datetime                               -910       Symfony\Component\Serializer\Normalizer\DateTimeNormalizer
  serializer.normalizer.json_serializable                      -900       Symfony\Component\Serializer\Normalizer\JsonSerializableNormalizer
  serializer.normalizer.problem                                -890       Symfony\Component\Serializer\Normalizer\ProblemNormalizer
  serializer.normalizer.object                                 -1000      Symfony\Component\Serializer\Normalizer\ObjectNormalizer
  serializer.denormalizer.array                                -990       Symfony\Component\Serializer\Normalizer\ArrayDenormalizer
  fos_rest.serializer.form_error_normalizer                    -10        FOS\RestBundle\Serializer\Normalizer\FormErrorNormalizer
  fos_rest.serializer.exception_normalizer.symfony             -10        FOS\RestBundle\Serializer\Normalizer\ExceptionNormalizer
  fos_rest.serializer.flatten_exception_normalizer             -10        FOS\RestBundle\Serializer\Normalizer\FlattenExceptionNormalizer
 ------------------------------------------------------------ ---------- ---------------------------------------------------------------------------

```

Please, focus on the `get_set_method_normalizer` line and the `"        -900` line.
To me, it's understandable. I first thought it's a bug in Symfony. But it is not.

The bug is in my application. since the service have `autoconfigure` + an explicit tag it has  finally 2 tags.
And the command was not really helpful
* the usage of `"` instead of a clear message is highly misleading.
* the fact Symfony registers the tag (`autoconfigure`) without a `priority` (nothing is displayed in the console) does not help either. BTW, we might registry tag with an explicit priority (0) instead of nothing. WDYT? I could do another PR for that.

So with this patch, I hope it'll be clearer:

```
root /app php bin/console debug:container --tag=serializer.normalizer

Symfony Container Services Tagged with "serializer.normalizer" Tag
==================================================================

 ------------------------------------------------------------ ---------- ---------------------------------------------------------------------------
  Service ID                                                   priority   Class name
 ------------------------------------------------------------ ---------- ---------------------------------------------------------------------------
  Symfony\Component\Serializer\Normalizer\DateTimeNormalizer   1          Symfony\Component\Serializer\Normalizer\DateTimeNormalizer
  App\Serializer\Normalizer\JsonApiItemNormalizer                         App\Serializer\Normalizer\JsonApiItemNormalizer
  get_set_method_normalizer                                               Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer
   (same service as previous, another tag)                     -900
  serializer.normalizer.constraint_violation_list              -915       Symfony\Component\Serializer\Normalizer\ConstraintViolationListNormalizer
  serializer.normalizer.datetimezone                           -915       Symfony\Component\Serializer\Normalizer\DateTimeZoneNormalizer
  serializer.normalizer.dateinterval                           -915       Symfony\Component\Serializer\Normalizer\DateIntervalNormalizer
  serializer.normalizer.data_uri                               -920       Symfony\Component\Serializer\Normalizer\DataUriNormalizer
  serializer.normalizer.datetime                               -910       Symfony\Component\Serializer\Normalizer\DateTimeNormalizer
  serializer.normalizer.json_serializable                      -900       Symfony\Component\Serializer\Normalizer\JsonSerializableNormalizer
  serializer.normalizer.problem                                -890       Symfony\Component\Serializer\Normalizer\ProblemNormalizer
  serializer.normalizer.object                                 -1000      Symfony\Component\Serializer\Normalizer\ObjectNormalizer
  serializer.denormalizer.array                                -990       Symfony\Component\Serializer\Normalizer\ArrayDenormalizer
  fos_rest.serializer.form_error_normalizer                    -10        FOS\RestBundle\Serializer\Normalizer\FormErrorNormalizer
  fos_rest.serializer.exception_normalizer.symfony             -10        FOS\RestBundle\Serializer\Normalizer\ExceptionNormalizer
  fos_rest.serializer.flatten_exception_normalizer             -10        FOS\RestBundle\Serializer\Normalizer\FlattenExceptionNormalizer
 ------
```

Commits
-------

3abebb16de [FrameworkBundle] Use more explicite wording for debug:container command
2021-05-01 07:30:39 +02:00
.github minor #40928 [CI] Sort packages by length to match modified package better (Nyholm) 2021-04-27 16:46:31 +02:00
src/Symfony minor #41004 [FrameworkBundle] Use more explicite wording for debug:container command (lyrixx) 2021-05-01 07:30:39 +02:00
.appveyor.yml Merge branch '4.4' into 5.2 2021-02-16 11:13:48 +01:00
.editorconfig Update .editorconfig 2018-09-06 16:22:56 +02:00
.gitattributes [Runtime] a new component to decouple applications from global state 2021-03-09 21:44:54 +01:00
.gitignore Run the phpunit-bridge from a PR 2019-08-02 17:46:19 +02:00
.php_cs.dist Merge branch '5.1' into 5.2 2021-01-19 22:00:40 +01:00
.travis.yml Merge branch '5.2' into 5.x 2021-04-27 18:10:18 +02:00
CHANGELOG-5.0.md Merge branch '5.0' into 5.1 2020-06-15 13:50:15 +02:00
CHANGELOG-5.1.md Update CHANGELOG for 5.1.10 2020-12-18 14:43:18 +01:00
CHANGELOG-5.2.md Update CHANGELOG for 5.2.6 2021-03-29 07:16:50 +02:00
CHANGELOG-5.3.md Update CHANGELOG for 5.3.0-BETA1 2021-04-18 08:39:43 +02:00
CODE_OF_CONDUCT.md Added the Code of Conduct file 2018-10-10 03:13:30 -07:00
composer.json [DependencyInjection] Add conflict rules for incompatible ext-psr versions 2021-04-19 22:21:11 +02:00
CONTRIBUTING.md Mention the community review guide 2016-12-18 22:02:35 +01:00
CONTRIBUTORS.md Update CONTRIBUTORS for 4.4.21 2021-03-29 07:10:41 +02:00
LICENSE Bump license year 2021-01-01 10:24:35 +01:00
link Added Translation Providers 2021-04-21 11:10:56 +02:00
phpunit Merge branch '4.4' into 5.2 2021-02-11 09:21:20 +01:00
phpunit.xml.dist Merge branch '4.4' into 5.1 2020-11-16 16:58:32 +01:00
psalm.xml Adding a Github action to run Psalm 2021-02-25 17:18:18 +01:00
README.md Update README.md 2021-04-04 16:42:37 +02:00
UPGRADE-5.0.md Merge branch '4.4' into 5.1 2020-12-10 18:44:54 +01:00
UPGRADE-5.1.md Update UPGRADE-5.1.md 2020-09-07 01:58:27 +02:00
UPGRADE-5.2.md [HttpFoundation] Deprecate BinaryFileResponse::create(). 2020-11-20 16:47:02 +01:00
UPGRADE-5.3.md Added Translation Providers 2021-04-21 11:10:56 +02:00
UPGRADE-6.0.md Added Translation Providers 2021-04-21 11:10:56 +02:00

Symfony is a PHP framework for web and console applications and a set of reusable PHP components. Symfony is used by thousands of web applications (including BlaBlaCar.com and Spotify.com) and most of the popular PHP projects (including Drupal and Magento).

Installation

Documentation

Community

Contributing

Symfony is an Open Source, community-driven project with thousands of contributors. Join them contributing code or contributing documentation.

Security Issues

If you discover a security vulnerability within Symfony, please follow our disclosure procedure.

About Us

Symfony development is sponsored by SensioLabs, led by the Symfony Core Team and supported by Symfony contributors.