Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Projekt obiektowy, czy tak dobrze?
lbt
post 11.03.2009, 09:09:42
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 11.03.2009

Ostrzeżenie: (0%)
-----


Witam,
Piszę aplikację w obiektowym php. Mam gotowe części służące do odczytu i manipulacji na danych, ale mam problem z dodawaniem nowych danych (np. rejestracją użytkowników).
Nie wiem w jakiej (i czy w) klasie miało by się to dziać.
Próbowałem się czegoś dowiedzieć na pl.comp.lang.php, ale nie otrzymałem ostatecznej odpowiedzi, więc pytam tu smile.gif

Do operacji na bazie danych używam statycznej klasy DataManager.

Czy następujące rozwiązanie będzie poprawne z punktu widzenia projektowania obiektowego?
Tworzę statyczną klasę Validator, która sprawdza poprawność wprowadzonych danych. W pliku rejestracja.php mam formularz. Po wysłaniu formularza sprawdzam odpowiednimi funkcjami z klasy Validator poprawność danych, a następnie funkcją np. DataManager::dodajUzytkownika dodaję użytkownika do bazy.
Wszystkie te operacje są wywoływane poza jakąkolwiek klasą, po prostu wpisane w pliku rejestracja.php.

Dzięki za pomoc
Pozdrowienia
Bartek


--------------------
podróże wyprawy
firany zasłony poznań
Go to the top of the page
+Quote Post
LBO
post 11.03.2009, 09:19:24
Post #2





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


To co opisujesz to nadal jest proceduralne programowanie, tylko, że ujęte w klasy.
Go to the top of the page
+Quote Post
lbt
post 11.03.2009, 09:21:32
Post #3





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 11.03.2009

Ostrzeżenie: (0%)
-----


Też tak to właśnie widzę, dlatego pytam...
Na początku chciałem rejestrację użytkownika włożyć do klasy Użytkownik, ale żeby wykonać jakąś operację na tej klasie muszę mieć stworzony obiekt użytkownika.
Proszę o podsunięcie jakiegoś rozwiązania.
Pozdrowienia
Bartek


--------------------
podróże wyprawy
firany zasłony poznań
Go to the top of the page
+Quote Post
Foxx
post 11.03.2009, 09:24:06
Post #4





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

Ostrzeżenie: (0%)
-----


Dlaczego nie mógłbyś tworzyć obiektu uzytkownik przed rejestracją? To że user jest niezarejestrowany to nie znaczy, że go nie ma.
Go to the top of the page
+Quote Post
LBO
post 11.03.2009, 09:28:11
Post #5





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Dobrze piszesz, nie rozumiem gdzie widzisz problem.
  1. <?php
  2. $user = new User();
  3. $user->register($first_name, $last_name, $login, $password, /* etc */ );
  4. ?>


Zawsze można też klasy serwisowe/peery/managery

  1. <?php
  2. $user = userManger::register($first_name, $last_name, $login, $password, /* etc */ );
  3. ?>


To jaki sposób wybierzesz zależy tylko od Twoich preferencji i od Tego, czy to nie będzie przeszkadzać w przyszłości przy rozbudowie (nie odnoszę się tylko do Usera, ale do ogółu każdego projektu jakikolwiek w przyszłościu napiszesz).
Go to the top of the page
+Quote Post
lbt
post 11.03.2009, 09:30:55
Post #6





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 11.03.2009

Ostrzeżenie: (0%)
-----


W tej chwili tworzę obiekt użytkownik dając do konstruktora parametr userid.
Tworzony jest obiekt z wszystkimi właściwościami, na których mogę operować.
Jeśli całe to rozwiązanie jest błędne, to piszcie od razu.
Nie rozumiem jak mógłbym tworzyć obiekt użytkownika, który się nie zarejestrował...

Cytat(LBO @ 11.03.2009, 09:28:11 ) *
Dobrze piszesz, nie rozumiem gdzie widzisz problem.
  1. <?php
  2. $user = new User();
  3. $user->register($first_name, $last_name, $login, $password, /* etc */ );
  4. ?>


Czyli nie tworzyć użytkownika od razu pobierając dane, a robić (przy odczycie) coś na wzór?
  1. <?php
  2. $user = new User();
  3. $user->pobierzDane($login);
  4. ?>


--------------------
podróże wyprawy
firany zasłony poznań
Go to the top of the page
+Quote Post
LBO
post 11.03.2009, 09:33:45
Post #7





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Nie, nic nie mówię jak ma być. Sam musisz dojśc do tego jak jest Tobie najwygodniej pobierać obiekty.
Go to the top of the page
+Quote Post
Foxx
post 11.03.2009, 09:34:40
Post #8





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

Ostrzeżenie: (0%)
-----


Chodzi mi o to, że gdy chcesz zarejestrować użytkownika to wtedy możesz stworzyć obiekt i wykonać jego metodę rejestracja, tak jak w przykładzie ~LBO. To, że dopiero za chwilę go zarejestrujesz nie jest przeszkodą w tworzeniu obiektu.
Go to the top of the page
+Quote Post
lbt
post 11.03.2009, 09:36:16
Post #9





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 11.03.2009

Ostrzeżenie: (0%)
-----


Czyli, jeżeli tak mi będzie wygodnie, to rozwiązanie jest poprawne, tak?
Wielkie dzięki za taką szybką pomoc! smile.gif


--------------------
podróże wyprawy
firany zasłony poznań
Go to the top of the page
+Quote Post
Mephistofeles
post 11.03.2009, 09:37:28
Post #10





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

Ostrzeżenie: (0%)
-----


Zrób sobie klasę (np. UserCollection), która będzie pobierała dane z bazy a z pobranej tablicy tworzyła Usera. W konstruktorze usera daj natomiast ładowanie z tablicy, ale z domyślnym null, żebyś mógł utworzyć pusty obiekt.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 00:42