Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: klasa template
Forum PHP.pl > Forum > PHP > Object-oriented programming
deniol13
witam, jestem w trakcie robienia prostej klasy styli (coś jak 1/100000 z smarty)

mam cuś takiego
  1. <?php
  2.  
  3. class phpc_Template
  4. {
  5. public $template_file = array(); //Tutaj trafia niezmodyfikowana zawartosc pliku z stylem
  6. public $vars = array(); //Tutaj zapisywane sa 'zmienne' stylu
  7.  
  8. public function load( $file, $id )
  9. {
  10. //Sprawdzamy czy plik z stylem istnieje
  11. if( !file_exists( $file ) )
  12. {
  13. //plik nie istnieje, pokazujemy wiadomosc bledu
  14. die( '<b>Critical error</b> : template file ' . $file . ' does not exist' );
  15. }
  16. else
  17. {
  18. //plik istnieje
  19. $this->template_file[$id] = file_get_contents( $file ); //Wczytujemy zawartosc pliku i wrzucamy do tablicy
  20. }
  21. }
  22.  
  23. public function set_var( $var, $content, $for_id )
  24. {
  25. $this->vars[$for_id][$var] .= $content; // Dodajemy zmienna stylu do tablicy
  26. }
  27.  
  28. public function display( $id )
  29. {
  30. foreach( $this->vars[$id] AS $var => $content )
  31. {
  32. $this->template_file[$id] = str_replace( '{' . $id . '.' . $var . '}', $content, $this->template_file[$id] );
  33. }
  34.  
  35. //Pokazujemy zmodyfikowany plik stylu
  36. return $this->template_file[$id];
  37. }
  38. }
  39.  
  40. $c = new phpc_Template;
  41. $c->load('test.html', 'test');
  42. $c->set_var( 'TEST', 'test', 'test' );
  43. echo $c->displat('test');
  44.  
  45. ?>


Wszystko jest ok, i w pliku stylu wpisuje <a href="{TEST}">{TEST}</a>
I jest ok a ja bym chcial cos takiego aby to <a href="{TEST}">{TEST}</a> wykonalo sie kilka razy czyli bym musial zrobic pętlę oraz jakąś funkcję która pobierze pętle według wzoru

{LOOP[ID]}
Jakis kod html i {TEST}
{/LOOP[ID]}

Ale nie mam pojecia jak to zrobic
sf
Smarty zamienia pseudokod na PHP więc w Twoim przypadku zamieni to {LOOP} na pętlę ( for, foreach ), zapisze jako plik .php i potem odpali ten skrypt PHP.
deniol13
no ok, ale jak mam to zapisać w kodzie php? Bo nie mam żadnego kompletnie pomysłu
Crozin
O "systemach szablonów" było już naprawdę wiele wątków na forum... za każdym razem było wyjaśniane dlaczego pisanie czegoś takiego w celach innych niż edukacyjnych jest bezsensu oraz jak się za to poprawniej zabrać.
gothye
zmienne typu :

{LOOP[ID]}

zmień na :

  1. <?php foreach($id as $_id) : ?>
  2. Jakis kod html i <?=$_id?>
  3. <?php endforeach ?>


potem jeśli chcesz wykonac kod przed wysłaniem stosujesz funkcje eval

wiec wynikiem tej funkcji będzie kod html , i można sie pokusić o prosta klasę cache na plikach winksmiley.jpg
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.