Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Budowa aplikacji - system newsów
Forum PHP.pl > Forum > PHP
symonides
Cześć,
mam kolejny problem z rozplanowaniem kodu... Teraz sytuacja dotyczy systemu newsów, na który składałoby się dodawanie, usuwanie i edycja newsów, system tagów(przyporządkowanie odpowiednich tagów do newsa na podstawie jego id, relacja wiele do wielu), i kategorii(podobna sprawa, tylko że relacja jeden do wielu), paginacja oraz komentarze. Oczywiście do tego dochodzi wyświetlenie newsów, komentarzy i odpowiednich kategorii i tagów na stronie.

Pisanie oddzielnej klasy do wszystkiego, moim zdaniem mija się z celem(trudne w użyciu?), zaś walnięcie wszystkiego do jednej klasy jeszcze gorsze. Jak to rozplanować. Tym razem pytam zanim zacząłem pisać jakikolwiek kod smile.gif Myślę, że paginację można wrzucić do klasy odpowiedzialnej za newsy, ale co z resztą?
Crozin
Tych klas powinieneś mieć dokładnie tyle ile będziesz miał różnych "bytów". A tutaj jest ich co najmniej kilkanaście. I dlaczego niby wiele klas miałoby być trudne w użyciu?
symonides
Czyli sądzisz, że jednak lepiej byłoby trzymać to w oddzielnych klasach. Czemu trudniej? Być może wynika to z mojej niewiedzy... bo popatrzmy, newsy byłyby pobierane "w klasie" News, a paginacja byłaby w oddzielnej klasie. Jak to połączyć? Chodzi o to żeby nie pobierać wszystkich newsów, tylko te które mają być wyświetlone. Klasa odpowiedzialna za paginację miałaby obliczyć na podstawie ilości newsów(zawrócone przez klasę News) i adresu(numer strony), które newsy pobrać(klauzula LIMIT) oraz liczbę stron i wygenerować odpowiedni panel do przechodzenia między tymi stronami. Co miałaby zwrócić klasa odpowiadająca za paginację(oprócz tego "panelu")? Liczbę newsów do pobrania i oczywiście numer newsa od którego zacząć pobieranie, a później te dane przekazać do klasy News, żeby pobrała odpowiednie rekordy?

Mam na, że nie zadałem zbyt dużo pytań. Chciałbym zrobić to jak najlepiej.
CuteOne
Trudniej teraz.. ale łatwiej później smile.gif załóżmy, że stworzyłeś system newsów w dwóch klasach [główna News i Paginacja] i nagle zapragnąłeś mieć moduł dodający komentarze do każdego newsa. Zastanów się teraz ile kodu musisz przerobić, żeby dodać jeden tylko moduł.. do tego dochodzi coś co się zwie błędami programisty - inaczej dobrą aplikację, możesz zbugować.

Sam ostatnio doświadczyłem czegoś takiego - idąc na łatwiznę przy pisaniu modułu wyświetlającego statystyki[upchnąłem wszystko w trzy klasy] tak naprawdę narobiłem sobie tony dodatkowej roboty.

Crozin
Cytat
Jak to połączyć?
Zapewne jakimś interfejsem który jest znany obiektowi paginacji i implementowany przez wszystkie obiekty od pobierania danych.
luck
Cytat(symonides @ 15.11.2010, 01:24:39 ) *
Co miałaby zwrócić klasa odpowiadająca za paginację(oprócz tego "panelu")? Liczbę newsów do pobrania i oczywiście numer newsa od którego zacząć pobieranie, a później te dane przekazać do klasy News, żeby pobrała odpowiednie rekordy?
Możesz przekazać z pagera do klasy News np. gotowe zapytanie, które ma zostać wywołane do pobrania porcji wyników. Nie widzę też nic złego w tym, aby pager sam pobrał odpowiednie dane z bazy i w postaci obiektu lub nawet prostej tablicy przekazał je do klasy News w celu ew. obróbki i wyświetlenia.
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.