![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 382 Pomógł: 0 Dołączył: 29.11.2005 Skąd: :jestem(); Ostrzeżenie: (0%) ![]() ![]() |
Witam
problem opiszę na przykładzie : - mamy w bazie rekord który dla różnych profili użytkownika wyświetla inne kolumny Gdzie powinno się znaleźć zapytanie o rekord ? - czy w klasie ModelUserProfil dziedziczącej po klasie ModelUser (chyba nie) ? ( tutaj mamy tylko kod do operacji na danych użytkownika ) - czy w klasie ModelDane która odpowiada za dane które chcemy uzyskać (raczej tak) ? ( wtedy trzeba do ModelDane przekazać informacje o profilu bierzącego użytkownika ) - czy w klasie ViewDane który generuje odpowiedni widok dla bierzącego usera (zdecydowanie tak) ? ( przekazujemy informacje o profilu użytkownika do widoku i na tej podstawie wyświetlamy tylko własciwe dla użytkownika dane, ale pobieramy zawsze komplet danych ) 3 rozwiązanie chyba najlepsze, tylko w ModelDane zawsze byśmy pobierali te same dane, a nie każdy profil wymaga pobrania danych dla rekordu z 3 tabel (po np. jeden z profili wymaga danych z jednej tabeli) - co wtedy z wydajnością ? Jak rozwiązujecie to u siebie ? pzdr |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 698 Pomógł: 3 Dołączył: 28.03.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Ja pomyślał bym nad fabryką i DAO dla obiektów reprezentujących wyświetlane dane. Szkoda trochę wydajności, żeby w większości przypadków (odwołania przeciętnych użytkowników) wykonywać potrójnego joina. Najlepiej widać to na pseudo-kodzie.
Tyle, że z tym rozwiązaniem jest jeden problem: dużo klas. Przyda się, jeżeli w tym DAO będziesz miał więcej operacji zależnych od typu użytkownika. Jeżeli będziesz miał tylko jedną metodę, może to być strata czasu. Wtedy można utworzyć uniwersalne DAO, w którym dokonasz wyboru zapytania po uprawnieniach (tak jak w fabryce wyboru DAO). Wypada wtedy fabryka i dwie klasy DAO. Widok możesz wybrać po typie obiektu z danymi albo uprawnieniach użytkownika. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 19:00 |