Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pomysł na CMS i małe wątpliwości
Forum PHP.pl > Forum > PHP > Object-oriented programming
tuner
Mam pewien problem.

Tworzę mały system portalowy, który ma możliwość uruchamiania kilku modułów jednocześnie. Każdy z tych modułów zwraca HTML do innego obiektu "Template".
Wszystko działa na obiektach. I tutaj pytanie, jak rozwiązać taką sprawę? Na dole opisuję mój sposób. Czy ktoś ma pomysł na lepszy?

W pliku, np. "arts.php" wywołujemy metodę engine'u, która tworzy obiekt modułu (module_arts) dziedziczący z klasy "module". Klasa moduł ma w sobie metody, które pozwalają przechowywać & do "Template'u" wyjściowego oraz różne inne opcje. "Uruchamiamy" stworzony obiekt, czyli nasz moduł "arts" za pomocą metody "run()".
I tu pojawia się problem, bo chcąc stworzyć jakiś bardziej zaawansowany moduł będziemy musieli tworzyć więcej obiektów (module_arts_files, module_arts_comm). Będą one musiały mieć te same opcje co obiekt "module_arts", a więc musimy przekazać wszystkie opcje do kolejnych obiektów (module_arts_files, module_arts_comm) bo muszą przecież wiedzieć, np. do jakiego "Template'u" zwracać HTML.
I tutaj mi się mój pomysł przestaje podobać...

Dotrwałeś do końca tego postu? Dzięki. Odpowiesz? Będę wdzięczny.
splatch
Myślę, że może Ci pomóc zastosowanie singletonu. Dzięki niemu całe wywołanie będzie obsługiwane przez jeden obiekt Template.
Przykładowy kod:
  1. <?php
  2. class view {
  3. var $template;
  4.  
  5. function view() {
  6. $this->template = new Template;
  7. }
  8.  
  9. function &instance( ) { //zwraca referencje
  10. static $view;
  11.  
  12. if( !isset( $view ) ) {
  13. $view = new view;
  14. }
  15. return $view;
  16. }
  17. }?>

Teraz jeśli chcesz użyć tej klasy:
  1. <?php
  2.  
  3. $view = &view::instance();
  4. $view->template->assign( 'as', 'as' );
  5. //itd
  6.  
  7. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.