Я пытаюсь написать класс ООП, который делает поиск по некоторым входящим параметрам.
Я могу делать поиск по местоположению, категории, имени и другим вещам.
Как сделать этот класс более профессиональным, абстрактным?
Теперь у меня есть только один метод в классе, который принимает запрос:
private function search($request)
{
// TODO
}
Запрос $ может содержать любые параметры, описанные выше.
Я не люблю делать:
if($request->category){
} else if($request->location){
} else if($request->name){
} ... etc
Что вам нужно сделать, так это получить построитель запросов (сделайте его или нас существующим из packagist), потому что вы в конечном итоге захотите выполнить поиск по нескольким параметрам.
Что касается общей организации кода, я бы на самом деле сделал его больше похожим на сервис, который использует некоторый тип шлюз табличных данных в качестве источника данных. Потому что я предполагаю, что изначально вы будете использовать SQL-сервер в качестве бэкэнда поиска, но если проект растет, вы должны перенести его на что-то вроде SphinxSearch или же ElasticSearch а наличие отдельной абстракции облегчит миграцию.
Других решений пока нет …