На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Все о 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 - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.



тегизаметки, Smarty, php

Читайте также:




Заготовка для диплома по интерфейсу СУБД на C#
Когда заработает поддомен?


© upread.ru 2013-2021
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.