Сышышь ты, выходи сюда,
поговорим!

Drupal 8: Services

Опубликовано: 22.10.2017

Данный материал я хотел написать, наверное, уже больше года, наконец-то нашел в себе желание расписать о том, что же такое сервисы в Drupal 8. В общем сложно о простом, погнали!

О сервисах

В Drupal 8 появилась такая штука как Services (сервисы), которая является ничем иным как Service Container из Symfony 2, просто адаптированным под Drupal. Местами синтаксис из Symfony 3, местами из Symfony 2, т.е. как бы можно читать гайды из симфони про сервисы, но проверяя так ли данные параметры работают в обертке друпала. Если вы пишите код, то вы уже 100% натыкались на сервисы, и если не писали, то столкнетесь с ними очень и очень быстро. Но зачастую, их использование сводится к копипасту из гайдов\ответов или же простому запоминанию нужных. Но что же там под капотом, зачем это, как делать свои сервисы, когда их делать и почему это нужно делать — в этом материале я постараюсь ответить на все эти вопросы.

Сразу отвечая на простой вопрос: "Нужно ли их использовать в своих модулях?" — да, и всегда. Это решает кучу "проблем", делает код читабельнее и организованнее, а главное — гибче. И по ходу материала, вы поймете, почему именно так. Если сразу немного подвести итог, то каждый объект в вашем модуле, который не является плагином или чем-то подобным, должен быть объявлен как сервис, и использоваться во всем коде через сервисы, а не напрямую. Так что да, в Drupal 8, использование сервисов для своих объектов это — best practice.

Говоря простым языком о сервисах — это инструментарий для работы с объектами и контроля всех зависимостей, который позволяет работать через централизованный API. Какие же преимущества у сервисов перед обычным созданием объекта и добавление зависимости в use:

rss