Все о Smarty
Smarty - это движок (обработчик) шаблонов для PHP, облегчающий отделение данных (HTML / CSS) от логики приложения. Это означает, что PHP-код является логикой приложения и отделен от показа информации конечному пользователю.
Цели создания Smarty
- отделение показа от кода приложения
- PHP backend, Smarty шаблон frontend
- дополняйте PHP, а не заменяйте его
- быстрая разработка / развертывание для программистов и дизайнеров
- быстрый и простой в обслуживании
- синтаксис прост для понимания, не требуется знание PHP
- гибкость для разработки на заказ
- безопасность: изоляция от PHP
- бесплатный, с открытым исходным кодом
Когда речь заходит о шаблонах в PHP, есть в основном два лагеря мышления. Первый лагерь восклицает, что"PHP - это шаблонный движок". Этот подход просто смешивает PHP код с HTML. Хотя этот подход быстр с точки зрения чистого выполнения скрипта, многие утверждают, что синтаксис PHP является беспорядочным и трудным для поддержания при смешивании с выводом. PHP хорошо работает для программирования, но не так хорошо для шаблонизации.
Второй лагерь восклицает, что «витрина» сайта должна быть лишена всего программного кода и вместо этого использовать простые теги, чтобы указать, где раскрывается содержимое приложения. Этот подход является общим для других шаблонных движков (и других языков программирования) и является подходом, который использует Smarty.
Почему важно отделить PHP от шаблонов?
Существует много преимуществ отделения PHP кода от шаблонов, некоторые из которых являются:
Синтаксис: Шаблоны обычно состоят из семантической разметки, такой как HTML. Синтаксис PHP хорошо работает для кода приложения, но быстро усложняется при смешивании с HTML. Простой синтаксис {tag} smarty's разработан специально для вывода. Smarty фокусирует ваши шаблоны на презентации и меньше на "коде". Это позволяет ускорить развертывание шаблона и упростить его обслуживание. Синтаксис Smarty не требует никаких рабочих знаний PHP и интуитивно понятен как для программистов, так и для не-программистов.
Особенности: механизм шаблонов имеет множество функций для презентации, которые в противном случае необходимо было бы разработать, протестировать и поддерживать в своем собственном коде приложения. Теги также маскируют сложность PHP-операторов. Например:
<?php echo strtolower(htmlspecialchars($title,ENT_QUOTES,UTF-8)); ?>И
{$title|escape|lower}Smarty является слоем абстракции на PHP для упрощения обслуживания шаблонов (также как и PHP - слой абстракции поверх C для упрощения разработки).
Песочница: когда PHP смешивается с шаблонами, нет никаких ограничений на то, какая логика может быть введена в шаблон. Smarty изолирует шаблоны от PHP, создавая управляемое отделение вывода от бизнес-логики. Smarty также имеет функции безопасности, которые могут дополнительно применять детализированные ограничения на шаблоны.
Переносимость: поскольку шаблоны Smarty являются языковыми агностиками, они могут быть легко скомпилированы на другие языки (например, javascript) с помощью другого компилятора, а знакомый синтаксис также может быть перенесен на другие языки программирования.
Веб-дизайнеры и PHP
Распространенный вопрос: "веб-дизайнеры должны изучить синтаксис в любом случае, почему бы и не PHP?" Конечно, веб-дизайнеры могут изучить PHP, и они уже могут быть знакомы с ним. Проблема заключается не в их способности изучать PHP, а в поддержании PHP, смешанного с HTML. {теги} являются более простыми, интуитивно понятными и менее хрупкими, чем PHP-операторы.
Шаблоны также ограничивают то, что может быть помещено в шаблон. PHP делает его слишком легко добавлять код в шаблоны, которые не принадлежат там. Вы могли бы научить дизайнеров правилам проектирования приложений, но если они этому научатся то станут разработчиками. А им это совсем ненужно.
Smarty предоставляет веб-дизайнерам именно те инструменты, которые им нужны, и дает разработчикам точный контроль над этими инструментами. Многочисленные функции также доступны для вывода, такие как наследование шаблонов, что позволяет максимально использовать шаблон повторно и упрощает организацию.
Как это работает?
Под капотом Smarty компилирует копии шаблонов в виде PHP-скриптов. Таким образом, вы получаете преимущества как синтаксиса тегов шаблона, так и скорости PHP. Компиляция происходит один раз, когда каждый шаблон сначала вызывается, а затем скомпилированные версии используются с этого момента вперед. Smarty заботится об этом для вас, поэтому дизайнер шаблонов просто редактирует шаблоны Smarty и никогда не должен управлять скомпилированными версиями. Этот подход позволяет легко поддерживать шаблоны и в то же время сохраняет время выполнения чрезвычайно быстро. Поскольку скомпилированные версии являются PHP, ускорители op-кода, такие как APC или ZendCache, продолжают работать над скомпилированными сценариями.
Наследование шаблона
Наследование шаблонов является новым для Smarty 3, и это одна из многих отличных новых функций. До наследования шаблонов мы управляли нашими шаблонами по частям, таким как шаблоны верхнего и нижнего колонтитулов. Эта организация имеет многие проблемы, которые требуют «костылей», таких как управление контентом в верхнем/нижнем колонтитуле на основе каждой страницы. С наследованием шаблонов, вместо того, чтобы включать другие шаблоны, мы сохраняем наши шаблоны в виде отдельных страниц. Затем мы можем манипулировать блоками содержимого внутри, наследуя их. Это делает шаблоны интуитивно понятными, эффективными и простыми в управлении.
Почему бы не использовать синтаксис XML/XSLT?
На то есть несколько веских причин. Во-первых, Smarty можно использовать для больше чем как раз шаблоны на основе XML / HTML, такие как создание электронных писем, javascript, CSV и PDF-документов. Во-вторых, синтаксис XML/XSLT еще более подробен и хрупок, чем PHP-код! Это прекрасно для компьютеров, но ужасно для людей. Smarty - это то, что легко читать, понимать и поддерживать.
Безопасность шаблона
Хотя Smarty изолирует вас от PHP, у вас все еще есть возможность используйте его определенным образом, если вы хотите. Шаблон силовых структур ограничение PHP (и выберите функции Smarty.) Это полезно, если у вас есть сторонние шаблоны редактирования, и вы не хотите, чтобы раскрыть всю мощь PHP или Smarty к ним.
Другие шаблонные движки
Smarty - это не единственный движок, следующий философии "отдельный программный код от вывода". Например, Python имеет шаблонные движки, построенные на тех же принципах, таких как Шаблоны Django и Гепард. Примечание: такие языки, как Python, не смешиваются с HTML изначально, что дает им преимущество правильного разделения программного кода с самого начала. Есть доступные библиотеки чтобы смешать Python с HTML, но они, как правило,применяются редко.
Чем Smarty не является
Smarty - это не платформа для разработки приложений. Smarty - это не MVC. Smarty не является альтернативой Zend Framework, CodeIgniter, CakePHP или любой другой инфраструктуре разработки приложений для PHP.
Smarty является шаблономизатором, и работает как View компонент вашего приложения. Smarty можно легко подключить к любому из движков, перечисленных выше. Smarty не гарантирует хорошего дизайна приложения или надлежащего разделения презентации, это все еще должно быть решено компетентным разработчиком и веб-дизайнером.
Разве Smarty подходит мне?
Smarty не должен быть инструментом для каждой работы. Важно определить, соответствует ли Smarty вашим потребностям. Есть несколько важных вопросов, чтобы задать себе:
СИНТАКСИС ШАБЛОНА. Вы согласны с тегами PHP, смешанными с HTML? Ваши веб-дизайнеры комфортно с PHP? Может быть, ваши веб-дизайнеры предпочитают синтаксис на основе тегов, предназначенный для презентации? Некоторый опыт работы как с Smarty, так и с PHP помогает ответить на эти вопросы.
Бизнес-кейс: есть ли требование изолировать шаблоны от PHP? Есть ли у вас ненадежные партии редактирования шаблонов, которые вы не хотите, чтобы развязать власть PHP к? Необходимо ли программно управлять тем, что доступно и что недоступно в шаблонах? Smarty предоставляет эти возможности по дизайну.
Набор функций: есть ли функции Smarty's, такие как кэширование, наследование шаблонов и архитектура плагинов, которые сохраняют циклы разработки, пишущие код, который был бы необходим в противном случае? Имеет ли кодовая база или платформа, которую вы планируете использовать, необходимые функции для компонента презентации?
Многие известные PHP-проекты используют Smarty, такие как XOOPS CMS , CMS Made Simple и Tiki CMS/Groupware.
Итого
Используете ли вы Smarty для небольшого веб-сайта или массового корпоративного решения, он может удовлетворить ваши потребности. Есть множество функций, которые делают Smarty более широкий выбор:
- разделение PHP и HTML / CSS
- удобочитаемость для организации и управления
- безопасность для доступа к шаблонам сторонних производителей
- завершенность, легко расширяемый к вашим собственным потребностям
- массивная база пользователей
- Лицензия LGPL для коммерческого использования
- 100% бесплатно, проект с открытым исходным кодом
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Читайте также:
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.