Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Projekt obiektowy, czy tak dobrze?
Forum PHP.pl > Forum > PHP > Object-oriented programming
lbt
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
LBO
To co opisujesz to nadal jest proceduralne programowanie, tylko, że ujęte w klasy.
lbt
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
Foxx
Dlaczego nie mógłbyś tworzyć obiektu uzytkownik przed rejestracją? To że user jest niezarejestrowany to nie znaczy, że go nie ma.
LBO
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).
lbt
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. ?>
LBO
Nie, nic nie mówię jak ma być. Sam musisz dojśc do tego jak jest Tobie najwygodniej pobierać obiekty.
Foxx
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.
lbt
Czyli, jeżeli tak mi będzie wygodnie, to rozwiązanie jest poprawne, tak?
Wielkie dzięki za taką szybką pomoc! smile.gif
Mephistofeles
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.
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.