Как написать поисковый класс?

Я пытаюсь написать класс ООП, который делает поиск по некоторым входящим параметрам.
Я могу делать поиск по местоположению, категории, имени и другим вещам.
Как сделать этот класс более профессиональным, абстрактным?

Теперь у меня есть только один метод в классе, который принимает запрос:

private function search($request)
{
// TODO
}

Запрос $ может содержать любые параметры, описанные выше.

Я не люблю делать:

if($request->category){

} else if($request->location){

} else if($request->name){

} ... etc

-1

Решение

Что вам нужно сделать, так это получить построитель запросов (сделайте его или нас существующим из packagist), потому что вы в конечном итоге захотите выполнить поиск по нескольким параметрам.

Что касается общей организации кода, я бы на самом деле сделал его больше похожим на сервис, который использует некоторый тип шлюз табличных данных в качестве источника данных. Потому что я предполагаю, что изначально вы будете использовать SQL-сервер в качестве бэкэнда поиска, но если проект растет, вы должны перенести его на что-то вроде SphinxSearch или же ElasticSearch а наличие отдельной абстракции облегчит миграцию.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector