Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyszukiwarka w stylu OOP
jarexx
post
Post #1





Grupa: Zarejestrowani
Postów: 37
Pomógł: 2
Dołączył: 1.07.2009

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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).
Go to the top of the page
+Quote Post
jarexx
post
Post #3





Grupa: Zarejestrowani
Postów: 37
Pomógł: 2
Dołączył: 1.07.2009

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
krowal
post
Post #4





Grupa: Zarejestrowani
Postów: 561
Pomógł: 72
Dołączył: 15.11.2006

Ostrzeżenie: (0%)
-----


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.


--------------------
Nawet świnka może wejść na drzewo kiedy jest chwalona :)
Go to the top of the page
+Quote Post
Pilsener
post
Post #5





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 05:23