Глава 28 - як визначити контролери як сервіси

  • Components Symfony - Composer autoload
  • Створення вашого власного фрейморка ... використовуючи компоненти Symfony2 (Частина 12)
  • Створення вашого власного фрейморка ... використовуючи компоненти Symfony2 (Частина 11)
  • Створення вашого власного фрейморка ... використовуючи компоненти Symfony2 (Частина 10)
  • Створення вашого власного фрейморка ... використовуючи компоненти Symfony2 (Частина 9)

У цій книзі, ви дізналися як легко можна використовувати контролери, якщо вони розширюють базовий клас Controller. Поки це працювало чудово, але контролери також можуть бути визначені як сервіси.

[Su_spoiler open = "yes" icon = "" class = "my-spoiler note" title = ""]

Визначення контролера як сервісу вимагає трохи більше роботи. Головна перевага в тому що сутність контролера або будь-якого сервісу передає контролеру може бути змінено за допомогою настройки контейнера сервосов. Це особливо корисно коли розробляється open-sourse бандл або будь-бандл який буде використовуватися багаторазово в інших проектах.

Другим преімужеством це те що ваші контролери будуть в "пісочниці". Дивлячись на агрумент конструктора, легко побачити якого типу вони можуть бути, а якого немає. І тому кожна залежність повинна бути введена вручну, це стає більш очевидним (наприклад якщо у вас безліч агрумент для конструктора), якщо ваш контролле великий, і повинен бути розділений на багато маленьких.

І так, навіть якщо ви не збираєтеся визначати ваші контролери як сервіси, це ймовірно буде корисно для вас подивитися на open-source бандли в Symfony2. Це важливо розуміти плюси і мінуси обох підходів.

Визначення Контролера як Сервісу

Контролер може бути визначений як сервіс як і будь-який інший клас. Наприклад, якщо у вас є наступний контролер: