Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z klasą
Forum PHP.pl > Forum > Przedszkole
sazian
przeczytałem ten artykuł http://www.php.org.pl/artykuly/3/16

i przy próbie odpalenia głównego pliku wywala mi błąd Fatal error: Call to undefined function: set_files() in e:\usr\krasnal\www\moje\test.php on line 5
czyli ta linijka
  1. <?php
  2. $template -> set_files(
  3. array('index' => 'index.tpl',
  4. 'header' => 'header.tpl',
  5. 'bottom' => 'bottom.tpl'
  6. ));
  7. ?>


jeśli to zablokuje wywala kolejny błąd tym razem w
  1. <?php
  2. $template -> assign_vars('header',
  3. array('TITLE'  => "Spokojnie, to tylko test!",
  4. 'META'  => "",
  5. 'BGCOLOR'  => '#f0f0f0',
  6. 'KODOWANIE' => 'iso-8859-2'
  7. )
  8. );
  9. ?>


jak dla mnie wygląda to tak jakby nie łączył się z tym plikiem teplates.php

co może tu być nie tak questionmark.gif
cały kod strony głównej
  1. <?
  2. include "templates/teplates.php";
  3.  
  4. $template = new template('templates/');
  5. $template -> set_files(
  6. array('index' => 'index.tpl',
  7. 'header' => 'header.tpl',
  8. 'bottom' => 'bottom.tpl'
  9. )); 
  10.  
  11. $template -> assign_vars('header',
  12. array('TITLE'  => "Spokojnie, to tylko test!",
  13. 'META'  => "",
  14. 'BGCOLOR'  => '#f0f0f0',
  15. 'KODOWANIE' => 'iso-8859-2'
  16. )
  17. );
  18.  
  19. $template -> assign_var('bottom','LINK',"http://www.komandor.brod.pl/~splatch/");
  20.  
  21. $template -> assign_vars('index',
  22. array('HEADER', $template -> pparse('header'),
  23. 'TRESC', "Tutaj powinna znajdować się właściwa treść strony :)",
  24. 'BOTTOM', $template -> pparse('bottom')
  25. )
  26. );
  27.  
  28. $template -> parse('index');
  29. ?>

a to teplates.php
  1. <?php
  2. /******************************************************************************
  3. *  miniTemplate v. 1.2
  4. * Prosta klasa obsługi szablonów oparta na wzorze Splatch'a (splatch@wp.pl)
  5. ******************************************************************************/
  6.  
  7. class template
  8. {
  9. var $template = array();
  10. var $files = array();
  11.  
  12. // Jak zauważyliście klasa posiada tylko dwa atrybuty - tablicę z wartościami wszystkich znaczników i z nazwami plików.
  13. // Teraz prosty kontruktor klasy, który ustawi ścieżkę do szablonów.
  14.  
  15. function template($dir)
  16. {
  17. if($dir == "")
  18. {
  19. $this -> set_root("");
  20. }
  21. else
  22. {
  23. $this -> set_root($dir);
  24. }
  25. return true;
  26. }
  27.  
  28. // Poniżej znajduje się funkcja, która umożliwi stworzenie pełnej ścieżki do plikó
    w. W ten sposób nie musimy mozolnie definiować nazw plików jak poniżej:
  29. // $tmp = new template(moj/katalog/i/plik.tpl);
  30. // $tmp -> assign('znacznik', $wartosc);
  31. // $tmp -> parse();
  32. // Widzicie, że sposób ten jest kompletnie spalony, bo utrudnia obsługę wielu plik
    ów. Dzięki zastosowaniu konstruktora i poniższej funkcji możemy łatwiej i szybcie
    j definiować nazwy plików wraz z ich uchwytami. Dodatkowo nie jest już problemem 
    operowanie na trzech plikach na raz.
  33.  
  34.  
  35. function set_root($dir)
  36. {
  37. if($dir != "")
  38. {
  39. if(!is_dir($dir))
  40. {
  41. die("Template: nie można znaleść ścieżki do szablonu.");
  42. }
  43. else
  44. {
  45. $this -> root = $dir;
  46. }
  47. }
  48.  function set_files($files)
  49. {
  50. if(!is_array($files))
  51. {
  52. die("Template: funkcja set_files przyjmuje tylko tablice!");
  53. }
  54. else
  55. {
  56. while(list($tpl_id,$file) = @each($files))
  57. {
  58. $this -> files[$tpl_id] = $this -> root ."". $file;
  59. }
  60. }
  61. }
  62.  function set_file($tpl_id,$file)
  63. {
  64. $this -> files[$tpl_id] = $this -> root ."". $file;
  65. }
  66.  function assign_vars($tpl_id,$values)
  67. {
  68. if(!is_array($values))
  69. {
  70. die("Template: funkcja assign_vars() przyjmuje wartsci tylko w tablicy.");
  71. }
  72. else
  73. {
  74. reset($values);
  75. while(list($tag,$value) = @each($values))
  76.  {
  77. $this -> template[$tpl_id][tag][$tag] = $value;
  78.  }
  79. }
  80. return true;
  81. }
  82.  
  83.  
  84. function assign_var($tpl_id,$tag, $value)
  85. {
  86. if(empty($tag))
  87. {
  88.  die("Template: w funkcji assign_var() musisz podać nazwę znacznika!");
  89. }
  90. $this -> template[$tpl_id][tag][$tag] = $value;
  91. return true;
  92. } 
  93.  
  94.  
  95.  function compile($tpl_id,$code)
  96. {
  97.  while(list($key, $value) = @each($this -> template[$tpl_id][tag]))
  98. {
  99.  $tag = '{'.$key.'}';
  100.  if(!strstr($code, $tag))
  101.  {
  102. die("Template: nie można znaleść znacznika $tag w pliku");
  103.  }
  104.  $code = str_replace($tag, $value, $code);
  105. }
  106. return $code;
  107. }
  108.  
  109.  
  110. function pparse($tpl_id)
  111. {
  112. if(empty($this -> files[$tpl_id]))
  113. {
  114.  die("Template: tablica <i>files</i> dla wartości <i>$tpl_id</i> jest pusta.");
  115. }
  116. $file = $this -> files[$tpl_id];
  117. $code = @implode("n",@file($file));
  118. $gcode = $this-> compile($tpl_id,$code);
  119. $gcode = str_replace("nn", $gcode);
  120. return($gcode);
  121. }
  122. function parse($tpl_id)
  123. {
  124. print($this -> pparse($tpl_id));
  125. }
  126.  
  127. }
  128. }
  129. ?>
Cienki1980

Zamykam
Proszę zapoznać się z Tematyką i Zasadami panującymi na forum Przedszkole i wysłać mi lub innemu moderatorowi / opiekunowi na PW poprawny tag tego wątku wraz z linkiem do niego.
Do tego czasu wątek pozostanie zamknięty.
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.