Symfony2 и MVC - Является ли расширение контроллера хорошей практикой?
У меня простой и, возможно, глупый вопрос.
Используя PHP-фреймворк Symfony2, я часто работаю над расширением контроллеров, как показано ниже (конечно, это зависит от вида работы):
class MainController extends Controller{
private $locale = array();
protected function Locale() {
$em = $this->getDoctrine()
->getManager();
$this->locale = $em->getRepository('CommonLanguageBundle:Language')
->findBy(
array('code' => $this->getRequest()
->getLocale()
)
);
// \Doctrine\Common\Util\Debug::dump($this->locale);
return $this->locale[0];
}
//..
}
class StoreController extends MainController{
function a_method() {
$data = $this->Locale()->getId();
//...
}
}
class DefaultController extends StoreController {
$data = $this->Locale()->getId();
//...
}
Это хорошая практика?
Занимаясь серфингом в Интернете, я нашел много статей, но мне все еще не так ясно.
В конце концов, если бы он работал нормально в Symfony2, было бы хорошо в целом для паттерна MVC?
1 ответ
Решение
Symfony не является платформой MVC. Symfony - сервисно-ориентированная архитектура. Обычно каскадные расширяющие контроллеры не имеют смысла.
Скорее вы должны создавать сервисы и использовать их там, где они вам нужны.
Кроме того, хорошей практикой является определение контроллера как службы.