Какой шаблонизатор использовать. PHP, XSLT

Как бы не говнились программисты 1С:Битрикс, как бы не писали ужасные статьи, что XSLT — это сложно, страшно, тормознуто и вообще ужас какой-то, XSLT имеет право на существование, во всяком случае Я так считаю. И у меня на это несколько причин.

1. Абстрагирование от логики. Достаточно просто описать XML, который мы будем выдавать, чтобы правильно написать XSL-файл. Главное не вносить в XSL какую-то логику. Единственное, что Я позволяю выбирать в XSL стилях — это какой класс будет у элемента, если @a = 1. Ну что-то в таком духе.

2. Более понятное и наглядное представление. Кому как, а мне XSL шаблон нравится гораздо больше, чем мешанина из HTML и PHP, которая возникает при использовании PHP-шаблонизаторов или ещё хуже, при выводе HTML прямо из логики.

3. Скорость работы. Я проверил на простых примерах, что работает быстрее. Скачать примеры PHP  и XSLT можно внизу страницы.

Результат этих тестов такой:

Проверка времени выполнения прямого вывода из PHP за 1000 операций.
Прямой вывод работал: 0.0025558471679688
Проверка времени выполения с использованием подключаемого файла.
Вывод через файл отработал работал: 0.13970184326172
Вывод с использованием XSLT.
Вывод с использованием XSLT работал: 0.025261878967285

Прямой вывод как обычно побеждает. Но у него огромный недостаток — код становится нечитабельным. И попытки что-то изменить могут привести к неожиданным результатам.

На втором месте — XSLT. Он в 10 раз медленнее прямого вывода, но в 5,5 раз быстрее вывода с использованием подключения файла шаблона в цикле. В принципе, есть вариант, когда мы выносим цикл в подключаемый, но это сводится к выводу из PHP. Поэтому Я 1000 раз подключаю файл шаблона. :) И кстати, в примере с XSLT учитывается время создания XML, тогда как с PHP мы уже сразу выводим. Если будет готовая XML — время ещё уменьшится.

И подключение файла шаблона оказывается на третьем месте.

Smarty Я не рассматривал, может быть в следующий раз, когда у меня будет время написать более сложные примеры.

Скачать пример работы шаблонизаторов php xslt.

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

комментариев 9

  1. Smarty ужасен. Стоит его забыть как страшный сон :)

    XSLT кстати имеет много полюсов — умным браузерам, напр, можно отдавать xml-ину со ссылкой на стиль — они сами распарсят. + самое долгое — это парсинг стиля. если его как-либо закешировать между вызовами, то можно еще заздорово ускорить выдачу

    • beowulf13th:

      ну не обязательно умные. Это, вроде, если мне память не изменяет, и ослик 6-ой умел.

      • ослик тоже иногда бывает умным :D
        вот только если в хмл-ине будет доктайп, он по нему пойдет и заддосит сервак w3c :D

        но есть и тупые браузеры, например Arora. да и все, использующие QtWebkit

        + из поисковиков это понимал только яху, пока не закрылся

        • beowulf13th:

          кто-то пользуется Агогой кроме Дениса Попова? :)

          не знаю насчет webkit’a не проверял.

          а поповоду индексации — какая разница, что индексровать, если на выходе все равно html?

          Google отлично индеесирует я.ру, к примеру.

          • > не знаю насчет webkit’a не проверял

            сафари, хром и даже вроде мидори — норм

            > какая разница, что индексровать, если на выходе все равно html?

            client-side xslt поисковики не выполняют. у яндекса server-side, как у тебя в статье

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *