Задать вопрос

Как спроектировать следующую логику?

есть страница поиска отображаемая SearchControllerom
есть сам сервис поиска SearchService::search( $params ) внутри которого реализована логика сортировки, пагинации и еще много другой логики которая будет одинакова для всех проектов

базывое параметры поиска будут менятся от проекта к проекту

сейчас это как-то так

class SearchController extends Controller
{
    private function getParameterForSearchQuery()
    {
        return [ "type"=>["post","folder","group"], "subtree"=>"events" ]; 
    }

    public function indexAction()
   {
        . . .
        . . .
       $this->render('::index.html.twig',  $this->searchService->search( $this->getParameterForSearchQuery() )  );
   }
}


короче я сделал чтоб в последующих проектах можно было пронаследовать этот контролер и перепределить одно лишь свойство

getParameterForSearchQuery() { return ["type"=>"file"] }

на сколько это правильно/неправильно?

подскажите лучшую практику. паттерны и т д

спасибо
  • Вопрос задан
  • 512 просмотров
Подписаться 5 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
@voidMan
Можно вынести это в отдельный бандл, реализовать в виде сервиса, а параметры вынести в конфиг. Даже если часть функциональности в каком-то производном проекте будет более специфичной можно предусмотреть указание своих классов (опять же в конфиге), которые наследовать от базового сервиса-контроллера.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы