Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Teoria - Klasy a ich zadania dla wyników wyszukiwania
Forum PHP.pl > Forum > PHP > Object-oriented programming
Robert3d
Witam
Mam problem czysto teoretyczny
Ponieważ nie bardzo wiem jak go optymalnie rozwiązać ze względów mojego małego doświadczenia w OOP.

Otóż założeniem jest stworzenie wyników wyszukiwania wraz ze stronicowaniem.

Obmyśliłem sobie że klasy powinny być tak skonstruowane by można je używać do innych projektów.

Mam zatem:
Klasa 1
Klasę samego wypisywania pagera czyli << < 123455 > >> i klasa zajmuje się tylko poprawnym obliczaniem miejscu w którym się znajdujemy oraz pobiera do siebie ilość podstron.

Klasa 2
I tu zaczyna się problem ponieważ nie wiem czy pisać klasę dla wyników oraz dla łączenia z bazą danych czy pisać dwie klasy jedną dla łączenia z bazą a drugiej do wykonania działania? Jakim jest zwracanie danych koniecznych czyli podział na podstrony.

Czy mógł by mi ta kwestię ktoś rozjaśnić ?


mortus
Obsługą bazy danych powinna zająć się zupełnie odrębna i niezależna klasa, którą będziesz mógł wykorzystać również "gdzieś indziej". Twoja druga klasa to zupełnie odrębny "byt", który należy w jakiś sposób połączyć z klasą do obsługi bazy danych. Tym sposobem jest dependency injection. Przykład:
  1. class db {
  2. // tutaj wszystkie metody służące do połączenia i obsługi bazy danych
  3. public function query() {
  4. // funkcja realizująca zapytanie
  5. }
  6. }
  7.  
  8. class moja_klasa {
  9. private $db = null;
  10. public function __construct() {
  11. $this->db = new db();
  12. }
  13. // a tutaj metody, które wykorzystują metody klasy db
  14. public function serchById($id) {
  15. $this->db->query($id);
  16. }
  17. }

Paginacja to zadanie dla jeszcze innej klasy.
Robert3d
Dziękuje za odpowiedz smile.gif
LSM
Swoją drogą pisanie własnego pager'a to fajny sprawdzian. :-)
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.