2013-12-16 4 views
1

Я изучаю Symfony2, и я нахожу интересный материал для инъекций зависимостей и контейнер обслуживания.Должна ли каждая бизнес-логика быть сервисом в symofny2?

Но я хочу знать, должен ли я сделать всю свою логику в контейнере службы, а затем называть его контроллером формы, или я мог бы использовать старый способ (создавать классы и создавать экземпляры, когда мне нужно)?

ответ

3

Вот что говорит official documentation по этой теме,

"Преимущества думать о„услуге“является то, что вы начинаете думать о отделяя каждую часть функциональности вашего приложения в серию услуг. Поскольку каждая служба выполняет только одно задание, вы можете легко получить доступ к каждой службе и использовать ее функциональность , где бы вы ни нуждались.. Каждая услуга также может быть легче протестирована и настроена, так как она отделена от других функций вашего приложения. сервис-ориентированная архитектура и есть не уникален для Symfony2 или даже PHP. Структурирование вашего приложения вокруг набора независимых классов обслуживания - это хорошо известная и надежная объектно-ориентированная передовая практика. Эти навыки являются ключом к тому, чтобы быть хорошим разработчиком практически на любом языке. "


Других слова, Turn общей логики (используется globaly в приложении) на услуги, является хорошей практикой.

1

С моей точки зрения, роль контейнера для сделать доступным для всего приложения всю общую логику.

Он действует как замена всем глобальным массивам ($ _REQUEST, $ _GLOBALS и т. д.) глобальным переменным, глобальным константам (в отличие от констант класса, которые остаются полезными), глобальные функции и все такие вещи, которые делают PHP r грязный язык. Он нацелен на то, чтобы сделать PHP полноценным языком ООП, которым он хочет быть.

Он вызывает один, чтобы избежать процедурного программирования, которое PHP все еще допускает, и это хорошо.

Одним словом, вы все еще можете использовать и использовать классы обычным способом. Но всякий раз, когда вы обнаруживаете две части кода или используете одну и ту же логику или повторно используете одну и ту же информацию, обычно это означает, что вы хотите использовать контейнер службы для повторного использования кода.

Смежные вопросы