Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: konstrukcja dynamicznej strony opartej na klasach
Forum PHP.pl > Forum > PHP
AndyPSV
Witam,
czy moglibyście przedstawić mi najprostszy sposób skonstruowania 'strony' (opartej na klasach), w której automatycznie zmienia się tytuł, opis, słowa kluczowe i nawigacja po otworzeniu danego modułu (includowanej strony) ?
bela
to nie takie proste winksmiley.jpg każdy inaczej podchodzi do tego i nawet proste rozwiązania mogą się bardzo różnić

ja zrobiłbym to tak
kernel wywołuje poszczególne klasy przez singleton ( db, modules, config, session_handler, error_handler i inne duperele) i juz strona główna tworzy nowy obiekt kernel i wywołuje moduł strona głowna albo coś takiego i moduł jest odpowiedzialny za wygenerowanie treści dla szablonu, na koniec wszystko jest ładowane w smarty/cos podobnego

tak w duzym skrocie winksmiley.jpg
AndyPSV
Do tego momentu co napisałeś to sam doszedłem :]. Jednak schody zaczęły się w momencie:

Cytat
juz strona główna tworzy nowy obiekt kernel i wywołuje moduł strona głowna albo coś takiego i moduł jest odpowiedzialny za wygenerowanie treści dla szablonu


Mógłbyś podać przykładowy kod dla modułu i dla klasy kernel składającej stronę w całość ?
bela
jasne

strona główna
  1. <?php
  2. require_once(&#092;"class/kernel.php\");
  3. $kernel = kernel::getInstance();
  4. $kernel->load_module(&#092;"strona_glowna\");
  5. $smarty = new Smarty();
  6. $smarty->assign('page', $kernel->module->modules[&#092;"strona_glowna\"]->display_content());
  7. ?>


kernel
  1. <?php
  2. require_once(&#092;"class/module.php\");
  3. class kernel
  4. {
  5. public $module;
  6.  
  7. private function __construct() {
  8. $this->module = module::getInstance();
  9. }
  10.  
  11. public function getInstance() {
  12. static $inst = NULL;
  13. if ($inst == NULL) {
  14. $inst = new kernel();
  15. }
  16. return $inst;
  17. }
  18.  
  19. public function load_module($name) {
  20. $this->module->load($name);
  21. }
  22. }
  23. ?>


module
  1. <?php
  2. class module
  3. {
  4. public $modules = array();
  5.  
  6. private $DB = null;
  7.  
  8. public function getInstance() {
  9. static $inst = NULL;
  10. if ($inst == NULL) {
  11. $inst = new module();
  12. }
  13. return $inst;
  14. }
  15.  
  16. private function __construct() {
  17. $this->DB = DB::getInstance();
  18. }
  19.  
  20. public function load($name) {
  21. if($this->check($name)) {
  22. require_once(&#092;"modules/\" . $name . \"index.php\");
  23. $this->modules[$name] = new $name;
  24. } else {
  25. // TODO error handler
  26. }
  27. }
  28.  
  29. protected function check($name) {
  30. $result = $this->DB->query(&#092;"SELECT * FROM modules WHERE name=`\". $name .\"`\");
  31. return $result->numRows();
  32. }
  33. }
  34. ?>
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.