![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 30.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam wszystkich ludzi dobrej woli
![]() Pytania oprę na ostatnio realizowanym projekcie jakim był serwis www z grami flash. Jak to serwis można w nim wyróżnić pewne części/moduły takie jak: Najpopularniejsza gra, Ostatnio grana gra, Newsletter... No i tu pojawia się moje pierwsze pytanie. Czy taki każdy moduł powinien być osobną klasą, której obiekt będziemy tworzyć?? Drugie moje pytanie będzie dotyczyło konkretnego modułu, który odpowiedzialny jest za wyświetlanie wszystkich gier z bazy danych z określonej kategorii. Jak byście takie coś zorganizowali w sposób obiektowy?? Mógłby ktoś tak w skrócie przedstawić jakie własności powinna mieć klasa, jakie metody, oczywiście bez implementacji. Tak tylko, żebym mógł się zapoznać. Ja zrobiłem coś takiego tyle, że mi się to niespecjalnie podoba: Kod class CatGames { private $data = array(); function __construct($cat_name) { global $db; $result = $db->query('SELECT name_id, name FROM games g LEFT JOIN categories c ON g.cat_id=c.id WHERE c.name=\''.$cat_name.'\''); while($row = $result->fetch_assoc()) { $row['url'] = getURL('gra',$row['name_id']); $this->data[] = $row; } $result->close(); } function __get($var) { return $this->$var; } } $catgames = new CatGames(); $smarty->assign('catgames',$games->data); Z góry dzięki z pomoc i pozdrawiam. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 80 Pomógł: 5 Dołączył: 23.09.2008 Skąd: Chełmno/Toruń Ostrzeżenie: (0%) ![]() ![]() |
ad 1
Tutaj nie będę odkrywczy i rzucę stwierdzeniem - wszystko zależy od Twojego stylu programowania. Niemniej tworzenie osobnych klas do każdej z tych kategorii to imho chybione rozwiązanie. Mi się od razu nasuwają dwa rozwiązania: a) tworzysz główną klasę, która określa podstawowe parametry każdej z - nazwijmy to umownie - kategorie, a następnie możesz albo utworzyć klasę dziedziczącą te podstawowe atrybuty, albo - jeśli różnice są kosmetyczne - tworzyć po prostu obiekty tej samej klasy, które będą po prostu opisywały kolejne "moduły" ![]() Oczywiście są to tylko małe sugestie, faktem jest, że wariacji tych możliwości jest bez liku. Dlatego dobrze jest wiedzieć po co i dlaczego chce się użyć OOP w php, który jak wiadomo demonem prędkości nie jest... ad 2 - tu właściwie mogę Cię odesłać do odpowiedzi na pytanie pierwsze... Tak naprawdę wszystko zależy od tego co właściwie chcesz osiągnąć, na jakie uogólnienie w obrębie całego kodu poszedłeś, czego potrzebuje przykładowo warstwa prezentacji. Możliwości jest naprawdę wiele ![]() -------------------- -- http://rafaljakubowski.net76.net --
google's my life ;) |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 83 Pomógł: 0 Dołączył: 23.02.2005 Ostrzeżenie: (10%) ![]() ![]() |
Trudno tu coś doradzić. Za mało informacji. Tworzenie klas do każdej możliwej operacji uważam także za zły pomysł i radzę poczytać o OOP.
"Najpopularniejsza gra, Ostatnio grana gra" - można to upchać w jedną klasę i dwie metody, to chyba jasne? Obiekt reprezentuje jakiś fizyczny byt, w tym przypadku grę. Trzecia metoda jaka bym dodał jest wyświetlenie gier z kategorii. Przez moduł rozumiem zbiór operacji, który także dla mnie powinien być klasą (Newsletter). A przykładowa klasa... hm, nie wiem czy to Ci teraz w czymś pomoże:
Możesz wykorzystać adres URL w postaci np. www.adres.pl/index.php?modul=Game&akcja=getGamesFromCategory&id=30, gdzie moduł odpowiada nazwie klasy, akcja nazwie metody tej klasy. Id to parametr. Może być ich więcej, to zależy już od Ciebie. Najprostsza postać wywołania metody obiektu może wyglądać tak:
Ten post edytował markac 9.11.2008, 01:12:05 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 06:51 |