друзей. В настоящее время я разрабатываю комплексный поиск. У меня есть следующие классы:Класс поиска. Образец совет запроса
App\Search\Search
App\Search\OrderBy\Relevance
App\Search\OrderBy\Priority
App\Search\OrderBy\WordMatch
App \ Search \ Search - основной класс поиска. Все классы внутри \ OrderBy берут объект построения запроса по ссылке и применяют к нему некоторые логики.
Вот некоторые примеры кода:
//App\Search\Search
Class Search {
protected $query;
public function __construct($phrase)
{
$this->phrase = $phrase;
$this->query = App\Airport::newQuery();
}
public function orderByRelevance()
{
OrderBy\Relevance::apply($this->query);
return $this;
}
public function orderByPriority()
{
OrderBy\Priority::apply($this->query);
return $this;
}
public function orderByWordMatch()
{
OrderBy\WordMatch::apply($this->query);
return $this;
}
}
Основная идея заключается в том, чтобы условно применить несколько упорядоченность к запросу, например:
$search = new Search('Berlin');
$search->orderByRelevance()->orderByPriority()->get();
Так код работает просто отлично, но я чувствую, некоторые в нем запах кода, особенно при объявлении каждого метода заказа вручную. Есть ли какой-либо шаблон или трюк, который может улучшить мой класс поиска?