2015-10-15 2 views
-2

В чем смысл публики и тегов при объявлении расширения Twig?В чем смысл публики и тегов при объявлении расширения Twig?

http://symfony.com/doc/current/cookbook/templating/twig_extension.html#register-an-extension-as-a-service

# app/config/services.yml 
services: 
    app.twig_extension: 
     class: AppBundle\Twig\AppExtension 
     public: false 
     tags: 
      - { name: twig.extension } 

Что является публичным и теги? Что я могу использовать?

ответ

0

В Symfony Docs Marking Services as Public/Private:

Что делает частные услуги особыми является то, что, если они только вводят один раз, они преобразуются из услуг встраиваемой инстанциации (например нового PrivateThing()). Это увеличивает производительность контейнера.

Теперь, когда услуга является частным, вы не должны получать услуги непосредственно из контейнера:

В основном частные услуги доступны только для инъекций в другие службы. Например, вы не смогли бы получить службу в действии вашего контроллера.

$container->get('app.twig_extension'); // would fail 
0

Дополнительная информация:

Tagging используется только для группировки и манипулирования же вида услуг перед компиляцией контейнера службы. Вот и все, ничего особенного. Здесь очень полезные сообщения:

Например, если вы создаете свой собственный класс (за счет расширения базы Twig_Extension) объявите его как услугу и пометьте его как twig.extension и очистите кеши (с разогревом), класс пропуска компилятора Twig (класс TwigEnvironmentPass) автоматически регистрирует его и распознает его как его собственные расширения, которые вы можете использовать в своей ветке файлы шаблонов ..