![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 196 Pomógł: 2 Dołączył: 1.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Ostatnio trochę czytałem na temat MVC i tak naprawdę tylko niektóre rzeczy z tego mi się podobają, nie wiem może jeszcze nie dostrzegam za wielu plusów, ale chce zastosować u siebie coś podobnego. Napisałem sobie klasę router i request, pierwsza pobiera dane z adresu, druga z formularzy, cookies, sesji i obsługuje dane z routera, klasę FrontController, które uruchamia moduł i tworzy instancję i klasę Action, uruchamia akcję (wywołuje metodę klasy). Kodowo wygląda to mniej więcej tak:
Jak powiecie czy to rozwiązanie jest optymalne, warto to dalej kodować, czy lepiej zabrać się za kodowanie 'standardowe' - z wprowadzaniem argumentów do funkcji itd.? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 698 Pomógł: 3 Dołączył: 28.03.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Trochę nie tędy droga. Zacznijmy od front kontrolera, który ma właściwości publiczne - powinny być prywatne.
Usunąłeś słowo kluczowe abstract z definicji klasy AbstractModule, która miała być abstrakcyjna. Nie możesz utworzyć instancji tej klasy, bo ona nic nie robi... Posiada tylko metodę runAction, która na podstawie nazwy akcji wywołuje odpowiednią metodę. Te metody musisz już napisać sam w klasie dziedziczącej AbstractModule. W przypadku tej konstrukcji, nie widzę sensu w podawaniu do konstruktora klasy modułu instancji front controllera. Na nic on nie jest potrzebny w tej klasie... Metoda runAction() w AbstractModule jest źle napisana - po co wyciągać obiekt modułu z front controllera? Przecież front controllera wywołuje tę metodę dla odpowiedniego modułu, dlatego runAction() operuje na składowych instancji, dla której została wywołana. Dlatego powinno być:
Warto wyrzucić do tego jakiś lepszy wyjątek, typu NoActionException. Komunikat nic Ci tak na prawdę nie daje w kodzie. Po typie wyjątku możesz już manipulować przechwytywaniem... Warto też do akcji jakoś przekazać obiekt żądania. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 04:28 |