![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 28.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
Do swojego sklepu staram się zaprojektować klasę produkt, ale nie do końca wiem czy dobrze się za to biorę (jest to moja pierwsza klasa), także jakbyście mi mogli powiedzieć czy dobrze kombinuje.
jej wstepny projekt:
Mam watpliwości co do metody dodaj, bo jest ona trochę niespojna z resztą klasy, bo jako jedyna nie wymaga parametru( id produktu) bo jeszcze takiego poprostu nie posiada, także nie wiem czy powinnem ją umieszczać w tej klasie. Zastanawiam się też jeszcze czy jeden argument to nie mało, ale zaden inny mi nie przychodzi na mysl. Będe wdzieczny za wszelkie uwagi które pomogą mi nabrać doświadczenia w tworzeniu klas. Pozdrawiam |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 111 Pomógł: 0 Dołączył: 27.07.2005 Ostrzeżenie: (0%) ![]() ![]() |
nie jestem specem od obiektowości, ale w ostatnim projekcie użyłem schematu aktywnego rekordu. Czyli w twoim przypadku to by wyglądało tak:
to tyle w tej sprawie ![]() W tym sposobie najlepsze jest to, że można utworzyć klasę abstakcyjną z metodami fetch(), update(), delete() po której będą dziedziczyły klasy product, user, category itd. Wtedy dopisywanie nowych modułów jest prostrze. przykład klasy abstrakcyjnej
wtedy klasa product (user, cokolwiek) wyglądałaby tak:
jednak problem powstał, gdy trzeba było utworzyć bardziej skomlikowane relacje między rekordami (możliwe że jeszcze czegoś nie wiem ![]() zlinczujcie mnie jeśli głupoty gadam. ![]() Ten post edytował Jim 28.07.2006, 10:33:05 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
@Jim: Bardzo trafne i fajne uwagi
![]() @smajster: Skoro używasz __construct to znaczy się, że używasz PHP5, więc metody i właściwości nadawaj atrybuty private/protected/public, tak będzie bardziej elegancko. Z dodawaniem to zrób tak: 1. konstruktor nie może miec domyslny ID taki jak to podał Jim:
2. tworzysz sobie taki obiekt bez parametru ID 3. wywołujesz metodę dodaj, a jako parametr możesz przekazac tablice dodatkowych parametrów. zamiast
zrób tak
Jak na pierwszą klasę to jest dobrze ![]() Powodzenia -------------------- |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 28.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam ponownie
![]() Postarałem się wprowadzić w życie zmiany jakie mi zaproponowaliście i wyszło mi takie cuś:
Klasa grupa jest mniej wiecej analogiczna do klasy produkt tylko prostrza i krotsza dlatego ją zamieściłem, obie dziedziczą od klasy data. Jak myślicie tak to powinno wyglądać? Obie te klasy mają znajdować się niby w klasie modelu. Są to moje pierwsze skończone klasy także proszę o wyrozumiałość ![]() Jak zauważacie jakieś błędy bardziej merytoryczne niż składniowe to skrobnijcie, bo chciałbym się jak najszybciej nauczyć poprawnie pisać w OOP. Pozdrawiam |
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Może tak. co robi taka konstrukcja w ciele metody?
Przeciez to powoduje błąd składni! -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 28.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
Skad mi sie to var tam wzielo
![]() Ale jeśli chodzi o jakieś błędy bardziej merytoryczne? Mam wątpliwości czy powinno być : protected $data , czy może jednak rozpisać to na wszystkie zmienne wchodzące w jej skład. |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
1. Jak na pierwszą skończoną to mi się podoba.
![]() 2. Do wyrzucania komunikatów użyłbym wyjątków. 3. Cytat protected $data , czy może jednak rozpisać to na wszystkie zmienne wchodzące w jej skład. Jeśli dasz tak jak piszesz, czyli protected $data, i w tablicy $data będziesz trzymał wszystkie zmienne wchodzące w jej skład, to bardzo prosto napiszesz ciało metod magicznych __set i __get. 4. Nie lubię czegoś takiego:
sprawdź raczej empty/isset, chyba, że z jakichś powodów tego nie zrobiłeś? -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 26.06.2025 - 23:17 |