Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyszukiwarka w stylu OOP
Forum PHP.pl > Forum > PHP > Object-oriented programming
jarexx
Witam,
Raczkuję w programowaniu zorientowanym obiektowo i mam do Was pytanie, a raczej prośbę.
Otóż w projekcie nad którym obecnie pracuję jest wyszukiwarka. Pisałem ją ze 2 lata temu i jest tam mnóstwo instrukcji warunkowych, w których w chwili obecnej trudno się połapać.
Przyszło mi do głowy, by ją przerobić w stylu OOP.
Chciałbym by wyszukiwarka była maksymalnie elastyczna.
Widzę to tak, że mam kilka klas, z których każda szuka lub filtruje inne dane i jeśli klient zażyczy sobie kolejny filtr, to chciałbym tylko dopisać jedną klasę.
Problem w tym, że za bardzo nie wiem jak to wszystko opakować w klasy.
Pewnie potrzebny będzie jakiś interfejs, może trzeba wykorzystać jakiś wzorzec projektowy?
Proszę o w miarę konkretne wskazówki jak rozwiązać problem. Może jakiś pseudokod?
Pozdrawiam.
phpion
Wygląda mi to na sztukę dla sztuki. Rzucasz mądrymi terminami, ale chyba nie do końca masz świadomość ich znaczenia. Przedstaw może swoją wizję jak miałaby działać ta obiektowa wyszukiwarka, co rozumiesz pod pojęciem filtrów jako obiektów. Jak dla mnie prościej dopisać warunek typu:
Kod
if (wybrano_jakies_pole) {
    dodaj_wartosc_do_warunku();
}

Po co mieszać w to jakieś obiektowe filtry? Przecież to i tak sprowadza się do utworzenia kolejnego warunku WHERE w zapytaniu (chyba, że to jakaś wyszukiwarka szukająca poza bazą danych).
jarexx
Wyszukiwarka ma szukać w kilkunastu tabelach w bazie.
Teraz właśnie mam tak rozwiązane, że w zależności od tego co otrzymam POST-em wybieram odpowiednie zapytanie i rozbudowuję warunek.
Ale tych warunków jest bardzo dużo i w tych warunkach są pozagnieżdżane kolejne warunki, a w nich kolejne.
Chcąc teraz dodać nową funkcjonalność wyszukiwania muszę się ostro nakombinować.
Chciałem to jakoś uprościć, żeby uniknąć tej gmatwaniny warunków.
Myślałem, że po prostu jest na to jakiś sposób, który w przypadku dodawania nowego kryterium wyszukiwania ograniczałby się tylko do napisania nowej klasy ze specyficzną metodą szukającą odpowiednich danych w odpowiednim miejscu.
krowal
Myślę, że dobrym rozwiązaniem jest skorzystanie z jakiegoś ORM'a np Doctrine lub Propel. Pozwaają one w przyjemny sposób operować na zapytaniu jak na obiekcie, dodając kolejne warunki do budowanego zapytania.
Pilsener
Cytat(jarexx @ 17.12.2010, 15:07:27 ) *
Wyszukiwarka ma szukać w kilkunastu tabelach w bazie.
- tak czy siak jesteś skazany na porażkę, modyfikacje będą czasochłonne, wyniki wyszukiwanie niedokładne i co z wydajnością?

Cytat(jarexx @ 17.12.2010, 15:07:27 ) *
Chciałem to jakoś uprościć, żeby uniknąć tej gmatwaniny warunków.
- nie da się, tu i tu musisz mieć jakiś model danych, który w przypadku OOP będzie nawet bardziej skomplikowany i rozbudowany niż tradycyjny, strukturalny.

Najlepiej użyć czegoś w stylu:
http://lucene.apache.org/

Lub wykorzystać googla, jeśli wszystkie dane są na stronach a te są dobrze poindeksowane to nie będzie problemu.

Inaczej jak? A jak serwis się rozrośnie do 50 tabel?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.