Сервисы и бандлы в Symfony. Введение.

Давайте познакомимся с еще двумя важными понятиями в Symfony - это понятие сервисов и бандлов. С этим приходится сталкиваться очень часто. 

Давайте будем разбираться, что этот такое и зачем это нужно.

Если рассмотреть Symfony в модели программирования MVC, то моделью в Symfony являются сервисы. Сервисы, как модель, отвечают за прием и обработку данных. 

По сути, Symfony целиком и полностью состоит из сервисов. Symfony - это такой "собираемый" движок и в нем находится огромное количество сервисов. 

Какие могут быть сервисы?

Сервис для отправки email почты, сервис для работой с базой данных, сервис для работы с логами и.т.д.

В общем, сервисов в Symfony очень большое количество. Именно сервисы позволяют Symfony быть как конструктором, мы сами можем определять какие части нам нужны, какие сервисы мы хотим использовать и.т.д.

Сервисы - это просто обычные PHP-классы (объекты), которые содержат свойства и методы. Благодаря сервисам Symfony приобрел популярность объектно-ориентированного фреймворка для  программирования. Все в этом фреймворке у нас работает с классами и объектами. 

Для того, чтобы мы могли использовать сервисы в Symfony, они у нас хранятся в специальном PHP-классе. Есть в Symfony один PHP-класс, который называется контейнер. 

Контейнер - это php-класс, который объединяет все сервисы, которые имеются в Symfony. Каждый сервис в этом контейнере имеет свое уникальное имя. По этому имени мы можем обратиться к этому сервису и вызвать какие-то свойства и методы, которые имеются в этом сервисе. 

Мы знаем, что сервисы у нас хранятся в контейнере, но сервисы - это обычные php-классы. Каким образом разместить эти сервисы внутрь контейнера?

Для этой цели в Symfony есть бандлы. Это специальные php конструкции кода, которые позволяют нам адаптировать какой-нибудь php-класс и разместить его в контейнер. 

Бандлы - это что-то вроде плагинов в Symfony. Они являются связующим звеном между обычным PHP-классом.

Бандл - php-класс + настройки, которые делают другие классы как сервисы в Symfony.

Если нам нужно добавить в проект какой-то бандл, нужно понимать, что нам понадобиться Composer. 

Вот такое вводное видео, чтобы мы могли познакомиться с основными понятиями Symfony и теперь уже на практике мы можем посмотреть и познакомиться с этими понятиями более подробно.