Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: System szablonów
Forum PHP.pl > Forum > PHP
thoriam
Witam mam mały problem z wybraniem szablonów. Korzystam od jakiegoś czasu ze smarty ale opinii dobrych o tym nie słyszałem. Zresztą samemu zobaczyłem że mielenie całej templatki nie jest chyba zbyt dobrym pomysłem jeśli chodzi o wydajność. Szukam czegoś innego. No właśnie czego questionmark.gif Na pewno potrzebny mi jest cache i tyle. Co polecacie??
Uriziel01
Sprawdź RainTPL. Gorąco polecam.

EDIT:
Co do złych opinii o smarty to nie masz co ich słuchać, są one oparte na starych wesjach tego systemu, najnowsze są jednak bardzo wydajne. Jedyną wadą (jak dla mnie) jest zbyt duże rozbudowanie biblioteki, zbyt rozbudowana składnia oraz masa niepotrzebnych funkcjonalności.
by_ikar
Cytat
Co do złych opinii o smarty to nie masz co ich słuchać, są one oparte na starych wesjach tego systemu, najnowsze są jednak bardzo wydajne. Jedyną wadą (jak dla mnie) jest zbyt duże rozbudowanie biblioteki, zbyt rozbudowana składnia oraz masa niepotrzebnych funkcjonalności.


Trochę sam sobie zaprzeczasz wink.gif bo nie ma co słuchać o tych opiniach, ale sam piszesz że jednak jakieś minusy ma.. Składnia to nie są jedyne minusy. Największym minusem jest fakt, że jeżeli chcesz wykonać coś niestandardowego, to musisz pisać plugin, funkcję lub inne ustrojstwo, tylko dlatego że całość jest parsowana znak po znaku.. Zrobiła się niestety ze smarty wielka kobyła, która jest przerostem treści nad formą..

Szukaj jakiego kolwiek systemu szablonów, cache bardzo łatwo sobie samemu dorobić. Szukaj takiego który nie będzie miał jakichś specjalnych ograniczeń, jaki nie będzie miał jakieś super wymyślonej składni.

Się trochę zareklamuje, i zarzucę ci do przejrzenia swój system szablonów. Tzn, żaden to system, ledwie jedna klasa wink.gif Ale mimo wszystko ma całkiem spore możliwości. A tutaj średniej jakości opis: http://forum.php.pl/index.php?showtopic=18...mp;#entry921998
pedro84
A z ciekawości, po co Ci w ogóle jakiś system szablonów? smile.gif
kiler129
Cytat(pedro84 @ 3.03.2012, 23:10:28 ) *
A z ciekawości, po co Ci w ogóle jakiś system szablonów? smile.gif


Aby oddzielić frontend od backendu smile.gif

Co do samego tematu to nie lepiej napisać coś własnego i skrojonego na miarę? smile.gif
Przecież to dość prosta sprawa w sumie.
pedro84
Cytat(kiler129 @ 4.03.2012, 02:57:21 ) *
Aby oddzielić frontend od backendu smile.gif

Oddzielenie warstwy biznesowej od prezentacji nie równa się użyciu systemu szablonów. Ja tam preferuję czyste PHP, żadne Smarty, Twigi, itp.
viking
A ja polecam http://phptal.org/ , oparty na pythonowym TAL (w Zope). Największa zaleta to sprawdzanie poprawności kodu podczas parsowania oraz łatwe przełączanie HTML / XHTML.
thoriam
tzn. ja już mam pewien bardzo prosty szablon dwie klasy podstawowa
  1.  
  2. abstract class View
  3. {
  4. private $_templateDir ='/';
  5. private $_extension ='php';
  6.  
  7. public function __construct()
  8. {
  9. $this->setTemplateDir($this->_templateDir);
  10. $this->setExtension($this->_extension);
  11.  
  12. }
  13.  
  14. public function setTemplateDir($dir)
  15. {
  16. $return = CUR_PATH .'/application/views/';
  17. if(strlen($dir) > 0 && $dir[strlen($dir) - 1] != '/')
  18. {
  19. $dir .= '/';
  20. }
  21. if(!is_dir($dir))
  22. {
  23. // throw new RuntimeException('Podany katalog szablonów '.$dir.' jest niedostępny.');
  24. }
  25.  
  26.  
  27. $return .=$dir;
  28. $this->_templateDir = $return;
  29.  
  30. }
  31.  
  32. public function getTemplateDir()
  33. {
  34. return $this->_templateDir;
  35. }
  36.  
  37. public function setExtension($extension)
  38. {
  39. if(!ctype_alnum($extension))
  40. {
  41. throw new DomainException('Nazwa rozszerzenia może zawierać wyłącznie litery i cyfry.');
  42. }
  43. $this->_extension = $extension;
  44. }
  45.  
  46. public function getExtension()
  47. {
  48. return $this->_extension;
  49. }
  50.  
  51. public static function factory($viewName)
  52. {
  53. return new EngineView($viewName);
  54. }
  55. }
  56.  


oraz ta wywołujaca sablon
  1.  
  2. class EngineView extends View
  3. {
  4. private $_template;
  5. private $_path;
  6. private $_data = array();
  7.  
  8.  
  9. public function __construct($template)
  10. {
  11. parent::__construct();
  12. $this->_template = $template;
  13. $path = $this->getTemplateDir();
  14. $path .=$template.'.'.$this->getExtension();
  15.  
  16. if(!file_exists($path))
  17. {
  18. throw new RuntimeException('Określony szablon '.$template.' nie istnieje.');
  19. }
  20.  
  21. $this->_path = $path;
  22. }
  23.  
  24. public function getTemplate()
  25. {
  26. return $this->_template;
  27. }
  28.  
  29. public function __set($name, $value)
  30. {
  31. $this->_data[$name] = $value;
  32. }
  33.  
  34. public function __get($name)
  35. {
  36. return $this->_data;
  37. }
  38.  
  39. public function render()
  40. {
  41. extract($this->_data);
  42.  
  43. require($this->_path);
  44. }
  45. }


bawiłem się trochę tym, ale nie chcę od nowa wynajdywać koła więc szukam może lepszego rozwiązania. No i średnio wiem jak zrobić ten cache. Może ktoś zarzuci jakiś przykład?
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.