Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Prosty parser szablonów
Forum PHP.pl > Forum > PHP
blind fish
No więc piszę (albo raczej próbuję) napisac prosty parser szablonów.. Oto jego prosty kod:
  1. <?
  2. class szablon {
  3. //start class szablon
  4. var $nieprzetworzony;
  5. var $nazwa;
  6. var $wartosc;
  7. function laduj($plik) {
  8. //start laduj()
  9. $this->nieprzetworzony = @file($plik);
  10. //koniec laduj()
  11. }
  12. function dodaj($nazwa, $wartosc) {
  13. //start dodaj()
  14. $this->nazwa[] .= &#092;"{\".$nazwa.\"}\";
  15. $this->wartosc[] .= $wartosc;
  16. //koniec dodaj()
  17. }
  18. function pokaz() {
  19. //start pokaz()
  20. return str_replace($this->nazwa, $this->wartosc, $this->nieprzetworzony);
  21. //koniec pokaz
  22. }
  23. //koniec class szablon
  24. }
  25. ?>

Ładuje plik, dodaję opcję i pokazuję to w prosty sposób:
  1. <?
  2. require(&#092;"dd.php\");
  3. $tpl = new szablon;
  4. $tpl->laduj(&#092;"index.tpl\");
  5. $tpl->dodaj(&#092;"sex\", \"male\");
  6. echo $tpl->pokaz();
  7. ?>

I otórz jedyne co mi się pokazuje to zamiast opcji {sex} podmienionej na "male" widze tylko "Array". Dlaczego i jak to ominąć by mi wszystko pokazywało ok?
Vengeance
  1. <?php
  2.  
  3. class Szablon
  4. {
  5.  var $blocks;
  6.  
  7.  function Szablon()
  8.  {
  9. $this->blocks = array();
  10.  }
  11.  
  12.  function assign($key, $value)
  13.  {
  14. $this->blocks[$key] = $value;
  15.  }
  16.  
  17.  function fetch($filename)
  18.  {
  19. if(!file_exists($filename))
  20.  die('Plik z szablonem ('.$filename.') nie istnieje');
  21. $read = join('', file($filename));
  22. foreach($this->blocks as $key => $value)
  23. {
  24.  $read = str_replace('{'.$key.'}', $value, $read);
  25. }
  26. return $read;
  27.  }
  28. }
  29.  
  30. ?>


i porownaj sobie co masz zle.
blind fish
Odkryłem że nie diała gdyż w zły sposób ładuje plik tongue.gif Thx, nie znałem funkcji join(), choć zanim zobaczyłem twoją odpowiedź zastosowałem impode() smile.gif Ale jak zauważyłem to tylko alias dla funkcji dla imlode tongue.gif
MoD
Zawsze można jeszcze użyć file_get_contents, wtedy odpuścisz sobie łączenia tablicy.
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.