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
hwao
post
Post #2


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




Uwaga czytanie ponizszego posta jest na wlasne ryzyko oglupienie spowodowane jego zawartosci merytoryczna(doslowna jak i ukryta) nie ponosze odpowiedzialnosc ;-) czytasz to na wlasna reke (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

A wiec... umnie ladowanie wyglada tak
  1. <?php
  2. //...,
  3. private function LoadModule( $strModule )
  4. {
  5.  //
  6.  $strModule = strtolower( $strModule );
  7.  
  8.  if( file_exists( DIR . 'core' . $strModule .'.class.php' ) )
  9.  {
  10. include( DIR . 'core' . $strModule .'.class.php' );
  11.  
  12. if( class_exists( $strModule ) )
  13. {
  14.  Core::get( $strModule, new $strModule );
  15.  return TRUE;
  16. }
  17. else
  18. {
  19.  throw new Exception( 'Core::LoadModule - Nie istnieje klasa ' '. $strModule .' ' .' );
  20.  return FALSE;
  21. }
  22.  }
  23.  else
  24.  {
  25. throw new Exception( 'Core::LoadModule - Plik ' '. $strModule .'.class.php' nie istnieje.' );
  26. return FALSE;
  27.  }
  28.  
  29. }
  30. //...
  31. ?>

Ale to moduly core... co do modolow typu menu news itp. bedzie do tego dodatkowa klasa ktora bedzie je odpowiednio ladowac tzn.
Wpierw sa pobierane dane z bazy danych nastepnie sa interpretowane, poczym zostaja zalaczone i tam odpowiednia czesc kodu nimi steruje, wysylaja dane i takowe o ile sa sa wysylane posrednio do widoku ktory je interpretuje...

Co do dziedziczenia w modelu nie wiem czy to napewno trafne. Osobiscie wolal bym obiekt wrzucic do protected i tam na nim operowac (w zaleznosc od tego co che uzywskac laduje sie odpowiednia klasa).

Ogulnie to malo co zrozumialem z pytania wiac odpowiedz tez moze byc malo zrozumiala i nie trafna
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: 15.10.2025 - 01:09