Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> MVC - model, swobodne rozwazania
.dragonfly
post
Post #1





Grupa: Zarejestrowani
Postów: 217
Pomógł: 0
Dołączył: 5.10.2003
Skąd: Londyn / UK

Ostrzeżenie: (0%)
-----


Buduje aplikacje oparta o MVC i w zwiazku z tym faktem doszedlem do pewnego rozwiazania. Teraz mam pytanie na ile jest ono trafne.

Jak wszyscy wiemy model ma za zadanie tylko operacje na danych. Czy dobrym rozwiazaniem jest zbudowanie modelu ktory odwoluje sie do "pod-modelow" (modulow) w nastepujacy sposob:


  1. <?php
  2.  
  3. /*
  4.  * W tym fragmencie kodu odwolujemy sie do modelu oraz sub-modulu user
  5.  * ktory operuje rzadaniami zwiazanymi z operacjami na uzytkowniku
  6.  */
  7. $this->model[user]->userProfile(1);
  8.  
  9.  
  10. ?>


Ladowanie modulu (metoda w klasie Model):

  1. <?php
  2.  
  3.  
  4.  
  5.  /**
  6. * Wybiera odpowiedni modul, includujac plik
  7. * @param $strModuleType 
  8. * @param $strModuleName
  9. * @param $strModuleVar
  10. * @return 
  11. */
  12. function loadModule( $strModuleType, $strModuleName, $strModuleVar = false )
  13. {
  14. if ( !$strModuleVar ) $strModuleVar = $strModuleName;
  15. require_once ( ENVIE_DIR . &#092;"modules\" . $strModuleType . \"envie.module.\" . $strModuleName . \"\" . $strModuleName . '.module.php' );
  16. $this->model[$strModuleVar] = new $strModuleName;
  17. } 
  18. ?>


Kazdy sub-modul jest "dzieckiem" (extends) klasy Model. Co sadzicie o takim rozwiazaniu
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
.dragonfly
post
Post #2





Grupa: Zarejestrowani
Postów: 217
Pomógł: 0
Dołączył: 5.10.2003
Skąd: Londyn / UK

Ostrzeżenie: (0%)
-----


Jedynym niedopatrzeniem z mojej strony mogl byc byc fakt iz nie pokusilem sie o sprawdzanie czy dana klasa oraz plik istnieja, ale to w rozwazaniu na temat metody sprawa kosmetyczna.

  1. <?php
  2.  
  3. /**
  4. * Wybiera odpowiedni modul, includujac plik
  5. *
  6. * @param $strModuleType
  7. * @param $strModuleName
  8. * @param $strModuleVar
  9. * @return
  10. */
  11. function loadModule( $strModuleType, $strModuleName, $strModuleVar = false )
  12. {
  13. if ( !$strModuleVar ) $strModuleVar = $strModuleName;
  14.  
  15. if ( file_exists( ENVIE_DIR . &#092;"modules\" . $strModuleType . \"envie.module.\" . $strModuleName . \"\" . $strModuleName . '.module.php' ) )
  16. {
  17. require_once ( ENVIE_DIR . &#092;"modules\" . $strModuleType . \"envie.module.\" . $strModuleName . \"\" . $strModuleName . '.module.php' );
  18. if ( class_exists( $strModuleName ) )
  19. {
  20. $this->model[$strModuleVar] = new $strModuleName;
  21. } 
  22. else
  23. { 
  24. // brak klasy
  25. } 
  26. } 
  27. else
  28. { 
  29. // brak pliku
  30. } 
  31. } 
  32. ?>


Dodatkowo w twoim rozwiazaniu nie ma mozliwosci zaladowania modulu pod inna nazwa. Tzn. nie mozesz zaladowac modulu "Foo" i odwolywac sie do niego poprzez np. $this->model[bar]->costam()

Co do dziedziczenia w modelu jest to jak najbardziej wskazane przy takowym rozwiazaniu wiec w tym aspekcie nie moge sie z toba zgodzic. Anyone else?
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 14.10.2025 - 00:33