Отправляет email-рассылки с помощью сервиса Sendsay

Пишем фреймворк на PHP

  Все выпуски  

Пишем фреймворк на PHP - Отображение


ANT_view и ANT_cache

В предыдущих ревизиях функционал кэширования был частью логики класса отображения (view). Я отделил механизм кэширования в отдельный класс (cache). Это позволит не занимать лишнюю память и выполняться быстрее хоть немножко. Класс кэширования запускается только в том случае, если в настройках включено сжатие трафика или если включён механизм кэширования.

ANT_view и включаемые шаблоны

В классе отображения было введено новшество - возможность включать подшаблоны из самих шаблонов Кстати, на этапе разработки я попался в рекурсию, от которой, тем не менее, защиту делать не собираюсь. А вот почему: потому что теперь можно заключить в шаблон рекурсивную функциональность, а это означает неограниченные возможности в поведении шаблонов, построение деревьев (хотя это спорный вопрос) и так далее. Один и тот же шаблон может вызвать себя с изменённым параметром и, как следствие, отобразить информацию в другом виде. Теоретически можно построить весь дизайн на одном единственном шаблоне с неограниченными возможностями. Но делать такого, конечно, не нужно :-).

Теперь рассмотрим, каким образом можно взаимодействовать с такими шаблонами из контроллера и из самих шаблонов.

Вот так выглядит вызов подшаблона из шаблона blog.tmpl.php:

Вызов подшаблона

Вот как выглядит шаблон test:

Шаблон

Вот контроллер:

Контроллер

Видно, что в контроллере в главный шаблон передаётся массив переменных $data. Если договориться, что test_data - это ключ массива параметров для шаблона test, то всё становится на свои места. А ведь удобно получилось. Теперь мы можем определить, что, допустим, для шапки сайта нужно передать массив мета-тегов. Соответственно в главном шаблоне может вызываться подшаблон header с массивом по ключу header_tags. Переменные "обзываются" в соответствии с логикой приложения.

Теперь, собственно, и результат работы:

Результат

Итоги

Теперь у нас появилась возможность составлять шаблоны любой сложности и вложенности, всё это кэшируется, если необходимо сжимается соответствующей библиотекой (zlib).

Все исходники вы по прежнему можете скачать из репозитория, если вам необходимо более подробно узнать, как работает код, - я старался писать коментарии везде, где они необходимы.


В избранное