Skip to content

Use the short Yaml syntax for service definition #7860

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 3 commits into from
Closed
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 28 additions & 14 deletions service_container/tags.rst
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,7 @@ to be used for a specific purpose. Take the following example:

# app/config/services.yml
services:
app.twig_extension:
class: AppBundle\Twig\AppExtension
AppBundle\Twig\AppExtension:
public: false
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I hesitated to use _defaults here to be able to remove this line and use the short syntax, wdyt?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd say, let's not add the "defaults" until we decide what to do with that new option.

tags: [twig.extension]

Expand All @@ -31,11 +30,7 @@ to be used for a specific purpose. Take the following example:
http://symfony.com/schema/dic/services/services-1.0.xsd">

<services>
<service
id="app.twig_extension"
class="AppBundle\Twig\AppExtension"
public="false">

<service id="AppBundle\Twig\AppExtension" public="false">
<tag name="twig.extension" />
</service>
</services>
Expand All @@ -45,16 +40,14 @@ to be used for a specific purpose. Take the following example:

// app/config/services.php
use AppBundle\Twig\AppExtension;
use Symfony\Component\DependencyInjection\Definition;

$definition = new Definition(AppExtension::class);
$definition->setPublic(false);
$definition->addTag('twig.extension');
$container->setDefinition('app.twig_extension', $definition);
$container->register(AppExtension::class)
->setPublic(false)
->addTag('twig.extension');

The ``twig.extension`` tag is a special tag that the TwigBundle uses
during configuration. By giving the service this ``twig.extension`` tag,
the bundle knows that the ``app.twig_extension`` service should be registered
the bundle knows that the ``AppExtension::class`` service should be registered
as a Twig extension with Twig. In other words, Twig finds all services tagged
with ``twig.extension`` and automatically registers them as extensions.

Expand Down Expand Up @@ -359,10 +352,31 @@ To answer this, change the service declaration:
tags:
- { name: app.mail_transport }

versionadded:: 3.3
.. versionadded:: 3.3
Support for the compact tag notation in the YAML format was introduced
in Symfony 3.3.

.. tip::

In YAML format, you may define a service with a simple array of tags as long
as you don't need additional attributes. The following definitions are
equivalent.

.. code-block:: yaml

services:

# Compact syntax
AppBundle\Twig\AppExtension: [twig.extension]

# Verbose syntax
AppBundle\Twig\AppExtension:
tags: [twig.extension]

.. versionadded:: 3.3
Support for the short syntax for service definition in the YAML format
was introduced in Symfony 3.3.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this should be moved to service_container, after #7807 is merged. I did not have that note there.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree I didn't realize I added it in tags.rst... I remove it and paste it here to not lose it.

.. tip::

    In YAML format, you may define a service with a simple array of tags as long
    as you don't need additional attributes. The following definitions are
    equivalent.

    .. code-block:: yaml

        services:

            # Compact syntax
            AppBundle\Twig\AppExtension: [twig.extension]

            # Verbose syntax
            AppBundle\Twig\AppExtension:
                tags: [twig.extension]

    .. versionadded:: 3.3
        Support for the short syntax for service definition in the YAML format
        was introduced in Symfony 3.3.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually rethinking about it, does it make sense? We don't talk about tags in service_container.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't we already have a place where we explain the difference?

Copy link
Contributor Author

@GuilhemN GuilhemN May 5, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think so, it was requested by #7441.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hm, not sure if we really need this.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Won't this be confusing for people who try to use it in lower versions because of our exemples using this syntax ?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we talk about different things? Do you mean the versionadded directive? Otherwise I don't see the problem as the changes were only merged into the master branch.


Notice that you've added a generic ``alias`` key to the tag. To actually
use this, update the compiler::

Expand Down