![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Dość dokładnie przerobiłem http://helion.pl/ksiazki/php5zp.htm, materiały na necie. Dużo też Was się pytałem na forum. Mam napisaną aplikacje strukturalnie. Chciałbym ją przepisać obiektowo i mam z tym problemy. Konkretnie z praktycznym zastosowaniem wiedzy teoretycznej..
Załóżmy, że mamy aplikację, która umożliwia logowanie. Jest też możliwy przydział uprawnień (tylko do odczytu lub do odczytu i zapisu) do konkretnego modułu aplikacji. Jedną z opcji aplikacji jest możliwośc wyświetlania spisu użytkowników aplikacji, z możliwością edycji danych, zmiany hasła, zmiany uprawnień, kasowania konta, itp. Nie wiem jak się za to zabrać. Rozumiem, że pisząc aplikację obiektowo wszystko jest odwzorowane na obiekt. Czyli jeśli chciałbym wyświetlić listę użytkowników systemu, to pobieram wszystkich użytkowników z bazy, dla każdego tworzę obiekt i zapisuję do kolekcji a potem iterując ją wyświetlam na ekranie? Jak się za to zabrać? Może macie jakieś praktyczne wskazówki? Będę wdzięczny. Ten post edytował J4r0d 9.11.2006, 22:15:16 -------------------- ”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335) |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 359 Pomógł: 1 Dołączył: 16.04.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Propozycja moja jest taka:
-Tworzysz sobie klase User, ktora zawiera takie pola jakie powinna miec.. dla przykladu pokaze jak ja tozrbilem:
W klasie tej uzylem Liba do laczenia z baza, zywcem z Rapide... dalej mamy Client Collectioner:
i to wszystko, mozemy dodac klienta:
edytowac:
lub usuwac:
uff. mam nadzieje, ze zrozumiesz jak cos to sluze pomoca ![]() ofc: co do client collectioner mozemy go uzupelnic:
i podac do foreach:
Ten post edytował envp 9.11.2006, 23:21:20 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Nie rozumiem skąd wziąłeś to:
Tyle pisania, żeby zrobić dodawanie użytkownika i wyświetlanie go. Zaraz zagłębie się bardziej w ten kod. Doceniam, że chciało Ci się tyle pisać. Czyli jesli chcę wyświetlić listę użytkowników wykonuję coś podobnego: 1. Pobieram pierwszego użytkownika tworząć obiekt. 2. Ładuję ten obiekt do kolekcji. 3. Powtarzam punkt 1 i 2 n-razy (dopóki są rekordy w bazie) 4. Iterując kolekcję wyświetlam użytkowników na ekranie? W dobrą strone idę? -------------------- ”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335) |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 359 Pomógł: 1 Dołączył: 16.04.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Tak, dokładnie, a fillup:
Ten post edytował envp 10.11.2006, 00:31:01 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 23.11.2004 Ostrzeżenie: (0%) ![]() ![]() |
ja bym raczej nie bawil sie w takie rzeczy.
wolal bym sobie napisac klase z 40 lnijkami za pomoca phpDoctrine, i nie martwil bym sie o zadne relacje ,sql etc. |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 879 Pomógł: 189 Dołączył: 14.06.2006 Skąd: Bytom Ostrzeżenie: (0%) ![]() ![]() |
Chciałem zapytać czy jest rozsądne przy pobieraniu np. 10 klientów => 10 zapytań do bazy. Może to zły pomysł ale może lepiej przygotować tablice z Id klientów i wrzucić ją opowiednio do zapytania, korzystać z PDO i zwracać obiekty, wsadzić do tablicy zwrócić tablicę do Util::fillUpClientCollectioner() i wniej w pętli dopiero dodać do kolekcji??
I jeszcze jedno pytanie, jeśli klienci/użytkownicy należą do grup. To czy do pola klasy client::groups należy wstawić tablice z id poszczególnych grup?? Czy skorzystać z kolektora grup i w tym polu trzymać obiekt kolektora grup?? |
|
|
![]()
Post
#7
|
|
![]() Grupa: Developerzy Postów: 823 Pomógł: 12 Dołączył: 18.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
destroyerr, jeżeli chodzi o grupy użytkowników, to zazwyczaj robi się 3 tabele:
- tabela userów - tabela grup - handler relacji user to group Przykładowa budowa tabel: user table: - id usera - nick usera - haslo usera groups table: - id grupy - nazwa grupy handler: - id usera - id grupy (na oba pola dajesz klucz priamry) Logując uzytkownika pobierasz jego grupy z handlera, ewentualnie nazwy grup biorąc je JOIN'em przez jej id. Zastosowanie proste, a jakże pratyczne - chyba każdy tak robi. Pozdrawiam, Athlan ![]() -------------------- Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij |
|
|
![]()
Post
#8
|
|
![]() Admin Techniczny Grupa: Administratorzy Postów: 2 071 Pomógł: 93 Dołączył: 5.07.2005 Skąd: Olsztyn ![]() |
ja bym pominal handler i w user table: dopisał id grupy wydaje mi sie ze tak jest intuicujniej .. i mniej tabel
![]() |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 416 Pomógł: 0 Dołączył: 8.01.2004 Ostrzeżenie: (0%) ![]() ![]() |
taa ale pod warunkiem ze jeden user moze nalezec do jednej grupy. jesli moze naliczyc do wielu, to jest to relacja wiele do wielu i rozwiazanie powyzej jest poprawne.
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 112 Pomógł: 20 Dołączył: 10.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Pytanie z innej beczki:
czy dodawanie/pobieranie klasy User nie lepiej zorganizować za pomocą magicznej metody __call()? Montujemy metodę:
to dość przykładowe oczywiście, ale oszczędza pisania oddzielnych metod dla poszczególnych wartość. Używam czegoś takiego w mojej klasie AppModel i sprawdza się znakomicie. Nie wyobrażam sobie ręcznego mapowania wszystkich właściwości poszczególnych klas potomnych modelu na odpowiadające im tabele w bazie danych. pozdr. |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 416 Pomógł: 0 Dołączył: 8.01.2004 Ostrzeżenie: (0%) ![]() ![]() |
@siemakuba w czym twoje rozwiazanie jest lepsze od zastosowania __get i __set. Po przegladnieciu twojego kodu nie bardzo rozumiem jaki jest sens jego stosowania.
|
|
|
![]()
Post
#12
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 112 Pomógł: 20 Dołączył: 10.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
@ikioloak: to co pokazałem to mój sposób na korzystanie z metod typu:
bez konieczności pisania metody do każdej właściwości klasy którą chcę w ten sposób ustawić. Nigdzie nie napisałem, że jest to lepsze niż stosowanie metod __get i __set ;) Napisałem, że jest to lepsze niż pisanie n metod pobierających / zwracających dane z klasy. Popatrz na pierwszy post i zobacz ile tego tam jest. Można tu owszem użyć __get i __set, ale wtedy rezygnujemy z konstrukcji: na rzecz: bez znaczenia czy będzie to już teraz realizowane przez __get i __set czy nie. pozdr. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 21:51 |