Witam.
Zamiast smarty stosuję do oddzielenia warstwy prezentacji od aplikacji prostą klasę.
Czy wywołanie jej wielokrotnie ( utworzenie obiektu ) w pętli obciąży znacząco parser ?
Przypuśćmy że pobieram z bazy wykaz kategorii produktów.
Czy jeśli teraz zrobię coś mniej więcej takiego:
  1. <?php
  2. while(($row = mysql_fetch_assoc($wynik)) !== false) {
  3. $tpl = new Template;
  4. $tpl->add(costam z tablicy pobranej);
  5. $zmienna .= $tpl->execute();
  6. }
  7. ?>

To czy ten kod nie obciąży znacząco procesu generowania strony ?
Może ktoś zna jakieś alternatywny rozwiązanie ?
Nie chciałbym używać do tego celu smarty bo co prawda mógłbym zawrzeć taką pętlę w kodzie strony,
ale chciałbym aby warstwa prezentacyjna nie zawierała kodu wykonywalnego tak jak można to zrobić w smarty.
  1. <?php
  2. class Template {
  3. var $tmpl;
  4. var $dane;
  5. function Template($name)
  6. {
  7. if(false !== (file_exists($name))) {
  8. $this->tmpl = @implode('', file($name));
  9. } else {
  10. $this->tmpl = $name;
  11. }
  12. $this->dane = Array();
  13. }
  14. function add($name, $value = '')
  15. {
  16. if (is_array($name)) {
  17. $this->dane = array_merge($this->dane, $name);
  18. } else if (!empty($value)) {
  19. $this->dane[$name] = $value;
  20. }
  21. }
  22. function execute() {
  23. return preg_replace('/{$([^}]+)}/e', '$this->dane["1"]', $this->tmpl);
  24. }
  25. }
  26. ?>