Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Kontroler, akcje ale trochę inaczej.
Joachim Peters
post
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:
  1. <?php
  2.  
  3. class FrontController {
  4.  public $module;
  5.  public $action;
  6.  public $objectAction;
  7.  
  8. public $request;
  9.  
  10. public function __construct(HttpRequest $request) {
  11. $this->request = $request;
  12.  
  13. $this->module = strtolower($this->request->get('get', 0));
  14. $this->action = strtolower($this->request->get('get', 1));
  15.  
  16. $this->runModule();
  17. }
  18.  
  19. public function runModule() {
  20. if(file_exists('./modules/user/'.$this->module.'.php')) {
  21. include_once('./modules/user/'.basename($this->module.'.php'));
  22.  
  23. $module = ucfirst($this->module);
  24.  
  25. $this->objectAction = new $module();
  26. } else {
  27. throw new Exception('Nie można znaleźć plików modułu');
  28. }
  29. }
  30. }
  31.  
  32. class Action {
  33.  private $controller;
  34.  
  35.  public function __construct(FrontController $controller) {
  36. $this->controller = $controller;
  37.  
  38. $this->runAction();
  39. }
  40.  
  41. public function runAction() {
  42. if(!is_null($this->controller->objectAction)) {
  43.  $action = $this->controller->action;
  44.  
  45. $this->controller->objectAction->$action();
  46. } else {
  47. throw new Exception('Brak akcji');
  48. }
  49. }
  50. }
  51.  
  52. $controller = new FrontController($request);
  53. $action = new Action($controller);
  54.  
  55. ?>

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.?
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 18:27