- 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. Це важливо розуміти плюси і мінуси обох підходів.
Визначення Контролера як Сервісу
Контролер може бути визначений як сервіс як і будь-який інший клас. Наприклад, якщо у вас є наступний контролер: