![]() |
![]() ![]() |
![]() |
-arrtxp- |
![]()
Post
#1
|
Goście ![]() |
Witam, czytając o MVC, stworzyłem własne rozwiązanie i chciałbym abyście oceni mój kod, gdzie mniej więcej przedstawiam system działania:
// struktura najważniejszych plików
index.php
iPage.php // ustala to co ma być wyświetlone
a-control/iView_Index.php
mod-view/index.php - widok
Teraz chciałbym dowiedzieć się czy takie rozwiązanie jest złe. Jakie stwarza problemy takie rozwiązanie? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 319 Pomógł: 118 Dołączył: 26.11.2003 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
1. Gdzie przekazujesz zmienne do widoku? Bo chyba o tym zapomniałeś.
2. Jak przekażesz z kontrolera np. tytuł strony do szablonu? 3. Jedna z metod Twojego kontrolera zwraca string, dlaczego, po co? 4. MVC, gdzie model? (IMG:style_emoticons/default/smile.gif) 5. Cytat /a-control // folder gdzie mamy klasy nie klasy tylko klasy kontrolera, bo w katalogu np. a-model będziesz trzymał też "klasy", ale chodzi o modele.6. Cytat
Czyli patrząc na to, każdy kontroler musisz zapisać tutaj w tablicy. Inaczej go nie uruchomisz. Po co w każdym kontrolerze, ładować pełną listę, np. 50-100 kontrolerów ? Ustal nazewnictwo plików, a następnie sprawdzaj, czy kontroler istnieje jako plik. Później sprawdź czy jest tam wywoływana klasa / metoda. Do tego musisz napisać jakąś "klasę", która zajmie się wszystkim. Nie rób wszystkiego w KAŻDYM kontrolerze. Ten post edytował Daimos 29.11.2014, 16:40:19 |
|
|
-arrtxp- |
![]()
Post
#3
|
Goście ![]() |
ad:
1. Nie muszę, wszystko dzieje się w obiekcje, po dane sięgam poprzez - $this->coś 5. Dlaczego nie mogę trzymać wszystkiego w jednym miejscu ? 6. Z tym 1 masz rację.
klasa abstrakcyjna o nazwie iPage robi wszystko, czyli ustala " moduł " i " widok ". Ogólnie to działa w ten sposób, np: strona.pl?v=news&nowy poprzez iPage::loadClass($_GET['v']); następuje wyczytanie klasy i utworzenie obiektu. A w tej klasie np: News poprzez __construct() następuje załadowanie odpowiednich danych/ wywołanie metod (przez $_GET['news']), które są ładowanie do widoku. To wszystko tworzy całość. Czy te rozwiązanie ogranicza mnie w jakiś sposób ? wg mnie, nie (albo nie mam o tym pojęcia, dlatego się pytam). Tworzę widok, klasa obsługująca i mam dodane rozszerzenie. I pytam się czy takie rozwiązanie mnie ogranicza i czy jest złe ? Jak tak to dlaczego ? Ten post edytował arrtxp 29.11.2014, 18:07:37 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 319 Pomógł: 118 Dołączył: 26.11.2003 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Zacznijmy od tego, czym jest widok, kontroler i model.
Jeden kontroler nie służy do obsługi całej aplikacji. Powinieneś mieć jakiegoś bootstrapa, klasę która odpowiada za request, routing itp. Najlepiej jakbyś podejrzał jak to jest rozwiązane w innych frameworkach. Kontroler powinien posiadać jak najmniej kodu, każda akcja powinna odpowiadać za konkretny request. Nie faszeruj kontrolera całym szkieletem aplikacji. Kontroler nie odpowiada za to, jaki kontroler uruchomić, zresztą czytając to na głos, słychać jawnie problem logiczny (IMG:style_emoticons/default/smile.gif) Analizując Twój kod, to Twoja klasa iPage działa jak bootstrap, obsługa żądania, routing. Wybierasz tam jaki kontroler uruchomić, jaką metodę. Więc zupełnie zbędne jest, aby każdy kontroler po tym dziedziczył. Podsumowując, koniecznie przyjrzyj się jak rozwiązują te problemy inne FW |
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 4 069 Pomógł: 497 Dołączył: 11.05.2007 Skąd: Warszawa ![]() |
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 15:13 |