View. PHP-шаблонизатор.

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

Но мы знаем, что PHP сконструирован специально для ведения Web-разработок и его код может внедряться непосредственно в HTML.
PHP — сам по себе является не только очень мощьным языком программирования, но и самодостаточным шаблонизатором, позволяющим делать качественные шаблоны без ущерба для логики приложения.

Такой стиль шаблонизации на PHP называют «pure-шаблонизация», т.е. чистая шаблонизация, основанная на возможностях самого PHP.
Класс View позволяет использовать шаблоны на чистом PHP.

Преимущества:

— Чистый PHP будет работать быстрее шаблонизаторов (интрепретаторов), написанных на PHP, т.к. нет программной «прослойки» между PHP и шаблоном, выполнение которой, как ни крути, а требует рессурсов. Хотя, многие современные шаблонизаторы компилируют шаблоны в PHP код.

— PHP и есть шаблонизатор и в шаблоне доступны все его возможности.

— Не нужно изучать дополнительный синтаксис. Знания HTML и шести — десяти конструкций на PHP вполне достаточно для верстки шаблона почти любой сложности.

Недостатки:

— Кто то считает, что «ужасный синтаксис». По-моему — это весьма субъективно и зависит от личных предпочтений. В моделях и контроллерах он уже не выглядит настолько ужасным )

— Слишком много лишнего текста в шаблонах. Тоже зависит от личных предпочтений и субъективно.
Итак к делу.

По существу применение View состоит из двух шагов:

1. Ваш скрипт контроллера создает экземпляр View и объявляет переменные этого экземпляра.

2. Контроллер приказывает View воспроизвести данный вид используя шаблон.

Скрипт контроллера

В качестве простого примера предположим, что ваш контроллер имеет список данных по книгам, который нужно вывести пользователю. Скрипт контроллера может выглядеть примерно так:

// Для наглядности, у нас есть массив с данными о книгах
$data = array(
array(
‘author’ => ‘Hernando de Soto’,
‘title’ => ‘The Mystery of Capitalism’
),
array(
‘author’ => ‘Henry Hazlitt’,
‘title’ => ‘Economics in One Lesson’
),
array(
‘author’ => ‘Milton Friedman’,
‘title’ => ‘Free to Choose’
)
);

// теперь присваиваем данные по книгам экземпляру View
$view = new View();
$view->books = $data;

// и выполняем скрипт вида «booklist.php»
echo $view->render(‘library.booklist.php’);

Скрипт шаблона:

Теперь нам нужен сопутствующий скрипт шаблона «library.booklist.php». Это такой же скрипт PHP, как и остальные, за одним исключением: он выполняется в области видимости экземпляра View, это означает, что $this ссылается на экземпляр View. Переменные, присваиваемые в контроллере для скрипта вида, являются открытыми свойствами экземпляра View. Таким образом, базовый скрипт вида может выглядеть следующим образом:

Список книг

 

 

Author Title

 

Нет книг для отображения.

 

Класс View также подерживает присваивание переменных в стиле CoTemplate:

$view->assign(array(
‘PAGE_TITLE’ => $title,
‘BREADCRUMBS’ => cot_breadcrumbs($crumbs, cot::$cfg[‘homebreadcrumb’]),
));

что аналогично:

$view->PAGE_TITLE = $title;
$view->BREADCRUMBS = cot_breadcrumbs($crumbs, cot::$cfg[‘homebreadcrumb’]);

Основные методы класса View:

render($viewFile, $type = ‘module’, $admin = null, $return = true)

Рендерит HTML код из шаблона и полученных данных.Принимает следующие параметры:

$viewFile — имя файла шаблона. Если не указано расширение или оно не входит в свойство класса $_extensions, будет использовано «.php».
$type — тип расширения. Может быть ‘plug’, ‘module’ or ‘core’
$admin — использовать файл admin-темы, если возможно. По умолчанию эту опцию метод пытается определить исходя из параметра $viewFile
$return — Вернуть готовый HTML-код в виде строки (если TRUE) или выполнить require($viewFile)

Файл шаблона ищется по тем же правилам, что и при использовании функции cot_tplfile() для CoTemplate.

addScriptPath($path, $prepend = true)

Добавить дополнительный путь для поиска шаблонов.

$path — Путь к папке с шаблонами.
$prepend — Поместить путь в начало стека.

scriptFile($base, $type = ‘module’, $admin = null)

Ищет и возвращает полый путь к файлу шаблона или false, если шаблон не найден. Параметры аналогичны методу render();

Автор статьи: Алексей Кальнов. Источник материала.

Хостинг без головной боли в РФ

beget-хостинг Тариф "Старт" - оптимально, не дорого и полностью готовый хостинг для установки сборки фриланс биржи https://beget.com/ru/order/start или клик по картинке

к тому же, тестирование на месяц бесплатно + сервисный домен - (свой домен прикрепить и протестирвать можно даже на бесплатном тестовом периоде хостинга)

Хостинг без головной боли в Украине

ukraine.com.ua

Поддержите проект

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