Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Organizacja klas
Forum PHP.pl > Forum > PHP
Pjotrek80
Problem dotyczy strony www - małego CMS opartego o MVC.

Mam klasę warstwy model dla części aplikacji służącej do wyświetlania galerii oraz klasę warstwy model od strony administratora.
Stworzyłem osobną klasę UploadFile i rozszerzyłem ją o klasę modelu galerii w części admin. Czy to dobre rozwiązanie? Czy lepiej to co jest w klasie UploadFIle umieścić w klasie modelu galerii administratora?

Funkcjonalność części administracyjnej pokrywa się częściowo z funkcjonalnością części standardowej - wyświetlanie strony.
Jak skorzystać z tych samych metod pobierania zdjęć w modelu administratorai i modelu służącego do wyświetlania zdjęć na stronie?
thek
Stwórz może katalog Core, który zawiera część wspólną dla obu części. Miałbyś wtedy wydzielone wspólne elementy, a także osobne dla części administracyjnej oraz klienckiej. W ten sposób mógłbyś odseparować obie części i biblioteki im potrzebne. W Core, Admin i Client mógłbyś zastosować model MVC niezależnie. Traktując każdą z nich jak swego rodzaju bibliotekę.
Pjotrek80
Cytat(thek @ 20.07.2013, 14:00:28 ) *
Stwórz może katalog Core, który zawiera część wspólną dla obu części. Miałbyś wtedy wydzielone wspólne elementy, a także osobne dla części administracyjnej oraz klienckiej. W ten sposób mógłbyś odseparować obie części i biblioteki im potrzebne. W Core, Admin i Client mógłbyś zastosować model MVC niezależnie. Traktując każdą z nich jak swego rodzaju bibliotekę.

Nie jestem pewien czy nie wprowadziłoby to jakiegoś chaosu obecną strukturę.
Może załączę screena ze strukturą katalogów mojego projektu.
!*!
A jaki jest sens rozbijania tego na model dla użytkownika i osobny dla admina? Kontroler powinien odpowiadać za dostęp przez ACL do każdego komponentu modelu.
Pjotrek80
Cytat(!*! @ 21.07.2013, 10:09:24 ) *
A jaki jest sens rozbijania tego na model dla użytkownika i osobny dla admina? Kontroler powinien odpowiadać za dostęp przez ACL do każdego komponentu modelu.

smile.gif Sam zastanawiałem się nad organizacją struktury, szukałem po sieci i wypytywałem tutaj na forum. I oto efekt smile.gif
Wydawało mi się to dość logiczne i przejrzyste, bo chyba łatwiej jest się odnaleźć/zorientować w strukturze, jeżeli mamy w katalogu admin rzeczy związane z panelem admina, niż gdyby wszystko zostało wrzucone do jednego katalogu?
Byłbym bardzo wdzięczny gdybyś wypisał jak taka struktura powinna wyglądać i przy okazji odpowiedział na moje wątpliwość dotyczące organizacji klas/kodu wspólnego dla części admina i klienta.
!*!
A jak będziesz chciał kasować np. posty z forum który ma widok wspólny dla użytkownika i będziesz chciał coś zmienić to będziesz poprawiał to w 2ch plikach? Model jest jeden,wspólny i tylko on, ewentualnie widok, to kontroler wszystkim steruje jak wskazuje jego nazwa i może być on osobny (a nawet powinien) dla panelu.
Pjotrek80
Cytat(!*! @ 22.07.2013, 09:58:49 ) *
A jak będziesz chciał kasować np. posty z forum który ma widok wspólny dla użytkownika i będziesz chciał coś zmienić to będziesz poprawiał to w 2ch plikach? Model jest jeden,wspólny i tylko on, ewentualnie widok, to kontroler wszystkim steruje jak wskazuje jego nazwa i może być on osobny (a nawet powinien) dla panelu.

Fajnie, wspólny model rozwiązuję po części moje problemy z organizacją kodu.
Nie do końca rozumiem przykład z kasowaniem postów...
Czy takie funkcjonalności jak upload plików należy umieszczać w modelu, czy w oddzielnej klasie i rozszerzać klasę modelu o klasę np. UploadFile?
!*!
Zarządzanie plikami, a model który ma kasować pliki to osobne klasy. Załóżmy że masz blog z panelem admina, w nim kasujesz komentarze, ale przykładowo wychodzisz poza panel i przeglądasz komentarze bezpośrednio we wpisie i tam masz link do kasowania jako że jesteś zalogowany jako admin. To przecież nie zrobisz osobnego kasowania w komentarzach i osobnego w panelu...
thek
ACL, ogólnie system uprawnień, routing czy tego typu rzeczy, które faktycznie są pewnym trzonem używanym niezależnie od tego gdzie jesteśmy, to właśnie Core. Jeśli jest ona w miarę niezależna i nie potrzebuje wstrzyknięć, wydzielasz to jako bibliotekę, lub jeśli jest malutkie, ewentualnie helper.
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.