![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 89 Pomógł: 20 Dołączył: 13.05.2007 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Chciałem się dowiedzieć czy mój tok myślenia odnośnie programowania obiektowego jest właściwy. Napisałem klasę do obsługi produktu jest to oczywiście mały zalążek tej klasy jednak nim zacznę pisać dalej chciałem się upewnić czy rozwiązania przyjmowane prze zemnie są prawidłowe.
Pierwsze moje pytanie dotyczy samego pobierania danych produktu z bazy danych czy przyjęte rozwiązanie jest prawidłowe czy też można to rozwiązać w jakiś lepszy sposób (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Kolejna sprawa dotyczy aktualizacji danych produktu, gdzieś wyczytałem (niestety obecnie nie jestem w stanie określić źródła tych informacji), że dobrym podejściem jest aktualizacja danych produktu w bazie przy niszczeniu obiektu (pisząc odpowiednią funkcję w destruktorze). Czy rzeczywiście jest to dobre rozwiązanie (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Ten post edytował porady-it.pl 2.11.2007, 16:00:16 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 8.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
Ja bym dazyl do osiagniecia takiego mechanizmu:
Rozdzielilbym operacja na bazie danych/zrodla danych od jednostki elementarnej czyli produktu. Manager przyjmuje obiekt produktu i go dodaje do bazy, manager zwraca obiekt produktu z bazy, na ktorym pozniej mozesz prowadzic dalsze operacje. W OOP jestem poczatkujacy, ale tak to rozumuje. Ten post edytował Helios 2.11.2007, 18:12:53 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 89 Pomógł: 20 Dołączył: 13.05.2007 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Czyli rozumiem że w tym wypadku funkcja _getInfo która pobiera informacje z bazy o produkcie miała by zostać przerzucona do klasy ProductManager jako getProductById i mniej więcej miło by to wyglądać w następujący sposób:
Mam jeszcze takie pytanko bowiem Ty w swoim przykładzie pokazywałeś że podstawowe dane produktu są przesyłane przez konstruktor, czy należy tak robić nawet w przypadku bardzo dużej ilości parametrów ? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Wedlug mnie twoja metoda wybierajaca dane z bazy powinna zwrocic tablice na ktorej potem bedziesz operowal, a co do konstruktora to powinienes tam wsadzic tylko to co bedzie ci potrzebne przy tworzeniu obiektu klasy
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 89 Pomógł: 20 Dołączył: 13.05.2007 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Rzeczywiście zgadzam się z Tobą że lepszym rozwiązaniem będzie zwracanie tablicy. Tak się zastanawiam czy przydakiem obiekt "product" nie będzie już zbędny, gdyż zwrócone dane w postaci tablicy mogę bezpośrednio przekazać do szablonu np. smarty gdzie dane te zostaną wyświetlone. Czy w takim wypadku tworzenie obiektu "product" nie zatraca sensu ? W jakim przypadku obiekt "product" może się przydać ?
Ten post edytował porady-it.pl 8.11.2007, 10:55:13 |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
W oczywsity sposób - nie musisz pisać kod SQL za każdym razem. Lepszym rozwiązaniem jest stosowanie obiektu Product i productsManager.
Wtedy sam Product to odzwierciedlenie tabeli/tabel bazy danych i operacje na niej, natomiast productsManager, jak nazwa wskazuje - zarządza obektami typu Product. Może zawierać metody np, takie (one nie sa statyczne - tylko tak się zapisuje): productsManager::getAsArray(), productsManager::getProducts(), productsManager::addToCollection() itp. Pozdrawiam. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 17:23 |