2017-05-13 8 views
-1

Ich versuche, die OOP-Klasse zu schreiben, die nach einigen eingehenden Parametern sucht. Ich kann Suche nach Ort, Kategorie, Name und andere Dinge tun. Wie macht man diese Klasse professioneller, abstrakter?Wie schreibe ich Suchklasse?

Jetzt habe ich nur eine Methode in der Klasse, die Anfrage akzeptiert:

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

Der Antrag $ Dose enthält alle oben beschriebenen Parameter.

Ich mag tun, nicht:

if($request->category){ 

} else if($request->location){ 

} else if($request->name){ 

} ... etc 

Antwort

0

Was Sie tun müssen, ist eine Abfrage-Builder erhalten (es oder uns von packagist vorhanden), da Sie schließlich um mehr als einen Parameter suchen wollen .

Wie für die allgemeine Organisation des Codes, würde ich es tatsächlich eher wie ein Service, der eine Art von table data gateway als Datenquelle verwendet. Ich gehe davon aus, dass Sie zunächst SQL Server als Ihr Such-Backend verwenden, aber wenn das Projekt wächst, sollten Sie es zu etwas wie SphinxSearch oder ElasticSearch migrieren und separate Abstraktion wird die Migration erleichtern.

+0

'query-builder' meinst du das Designmuster? – John

+0

Abfrageersteller sind keine Muster, sondern Bibliotheken. –

+0

Ich benutze Laravel. Und möchten Code neu erstellen, der keine Bibliotheken verwendet. – John