Showing posts with label Smarty. Show all posts
Showing posts with label Smarty. Show all posts

Saturday, January 27, 2007

PHP Templating Engines? Аре без!

Отново ми зададоха въпроса "Ползваш ли Smarty?" Еми НЕ! Знам, че можел да кешира. Знам, че разделял логиката от визуализацията. Знам, че бил най-якото нещо. Но за човек като мен, който от години не прави лейаути, а работи в екип с дизайнери, това би се оказало огромна пречка за работата ми. Тъкмо колегата Пешо Илиев се научи да разпознава PHP таговете и командите, и сега ако му сложа Smarty дали няма да гледа като тръба? Ще! :) От друга страна, за чий кеф да товаря сървъра да зарежда веднъж целият engine с всичките му конфигурационни файлове и т.н., веднъж темплейтите, веднъж логиката на сайта, веднъж да драсне по файловата система за да кешира, и чак тогава да извади резултата от страницата. Ами ако сайтът е наистина голям и се радва на три-четирицифрено число онлайн потребители, дали това няма да е пътят към Голгота на бедното сървърче. Нека не забравяме, че на този сървър не лежат само Apache-то и MySQL-а, а и на него има накичени хиляди сайтове.
Изобщо, с какво би ми помогнал един templating engine? Щял да ми раздели логиката от визуализацията. Че аз мога и сам, посредством разделяне на output-а на елементи и тяхното include(иране). Работата е изключително проста и нямам нужда от огромен енджин, за да го свърши вместо мен.
  1. Правя си един файл с темплейта на лейаута.
  2. Слагам вътре div-овете и всеки един динамичен елемент от тях се изтрива.
  3. Пише се CSS-а.
  4. Подлага се отдолу един PHP файл, който хвърля необходимата тежка заявка към MySQL-а, пресмята всичко, if else, if else, foreach, switch и т.н., докато всичко не се набута по необходимите променливи, които да държат съдържанието.
  5. Темплейтите на отделните динамични елементи генерират оптимизираният аутпут, посредством <?=$page->title?> например и т.н. и т.н.
  6. include_once 'footer.php';
И до там. Защо ми е Smarty? Заради кеша? PHP си има output buffering, който отлично върши същата работа. Още повече, ако не подлагам мегабайтовия templating engine, няма да ми се налага да кеширам толкова много.

И за да подплътя твърденията си още повече, бих ви препоръчал да прочетете тази статия, защото човекът го е обяснил повече от перфектно. Аз само изложих основните моменти на български език. Разделянето на output-а от логиката не е нещо, което се изисква само, за да може да се интегрира даден templating engine. Елементарната хигиена на кода го изисква.