Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]System szablonów na extract
Forum PHP.pl > Forum > Przedszkole
uncuncunc
Tak się zastanawiam nad budową prostego systemu szablonów w celach poszerzenia wiedzy. Czy powinienem zrobić to używając funkcji extract?

  1. array('title' => 'aaaa');
  2. //...
  3. private static function loadTemplateFile($templatePath, $vars)
  4. {
  5. extract($vars, EXTR_OVERWRITE);
  6. $template_return = '';
  7. require $templatePath;
  8. $template_return = ob_get_contents();
  9. return $template_return;
  10. }
  11. // wynik
  12.  
  13. echo $title; // zwraca 'aaaa'


Czy takie podejście jest poprawne? Jak się zabezpieczyć? I czy w ogóle używać tej funkcji?
Przeglądałem już różne systemy szablonów, jednak interesuje mnie Wasze zdanie.
daniel1302
Ja korzystam na codzień z takiego systemu(sam napisałem). Moim zdaniem nie ma potrzeby korzystania z Smarta czy OPT czy innych systemów które tworzą dodatkowy język skrpyptowy którym przecież jest już PHP.
  1. Class Template
  2. {
  3. /**
  4.   *Tablica z parametramią
  5.   **/
  6. private $atributes;
  7.  
  8. /**
  9. *Katalog z szablonami
  10. */
  11. private $tplDir;
  12.  
  13. /**
  14.   *Funkcja zapisuje zmienne które mają zostać przekazane
  15.   *do pliku widoku.
  16.   **/
  17. public function assign($key, $value=null)
  18. {
  19. if (is_string($key) && $value != null)
  20. $this -> atributes[$key] = $value;
  21. elseif(is_int($key) && $value != null)
  22. $this -> atributes[] = $value;
  23. elseif(is_array($key))
  24. foreach($key as $k => $v)
  25. if (is_int($k))
  26. $this -> atributes[] = $v;
  27. else
  28. $this->atributes[$k] = $v;
  29.  
  30. return false;
  31. }
  32.  
  33. /**
  34. *Ustaw z jakiego katalogu mają się otwierać pliki szablonu
  35. */
  36. public function setTemplateDir($dir)
  37. {
  38. if (is_dir($dir))
  39. $this -> tplDir = $dir;
  40. else
  41. return false;
  42. }
  43.  
  44.  
  45. /**
  46.   *Wywołanie funkcji spowoduje przekazanie zmiennych do szablonu
  47.   *oraz wyświetlenie strony.
  48.   */
  49. public function display($fileName, $viewAtribute=null)
  50. {
  51. if (!isset($this -> tplDir))
  52. $this -> setTemplateDir('templates/');
  53.  
  54. if (is_array($viewAtribute))
  55. $this -> assign($viewAtribute);
  56.  
  57. $filePath = $this -> tplDir.$fileName.'.php';
  58. if (!file_exists($filePath))
  59. return false;
  60.  
  61. if (is_array($this -> atributes))
  62. extract($this -> atributes);
  63. require_once $filePath;
  64. }
  65. }
  66. ?>
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.