ecto.ru

Проекты

Gekkon — шаблонизатор

Документация

Шаблон при помощи класса Gekkon компилируется в php файл и сохраняется в отдельную папку

Во время вызова шаблона проверяется наличие его откомпилированной версии если файл откомпилирован то вызывается откомпилированная версия иначе файл компилируется а потом вызываетя откомпилированная версия

Также файл будет перекомпилирован если его изменить

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

Класс Gekkon

Подключение Gekkon

Пример подключения — define('GEKKON_TRACE',0); include 'Gekkon/Gekkon.php'; //полный путь к директории где лежат папки Gekkon/ tpl/ tpl_bin/ $Gekkon=new Gekkon($_SERVER['DOCUMENT_ROOT'].'/Gekkon_project/');

Свойства класса

$temlate_path; — путь к папке с шаблонами (необходим доступ на чтение) $bin_path; — путь к папке с компилироваттыми шаблонами (необходим доступ на чтение и запись) $gekkon_path; — путь к папке с Gekkon

Все пути должны оканчиваться на /

Эти свойства определяются в конструкторе следующим образом $this->template_path=$path.'tpl/'; $this->bin_path=$path.'tpl_bin/'; $this->gekkon_path=$path.'Gekkon/';

Где $path — параметр конструктора, полный путь к директории Gekkon. После создания обьекта — свойства можно переопределить

Пользовательские методы

register($name,$value)

Регистрирует переменную $value в шаблонизаторе тип переменной может быть любой с именем $name

при этом создается копия переменной!!!

registers($name,$value)

Тоже самое что и register($name,$value), только переменная регистрируется как указатель на существующую переменную

display($file_name)

Показывает шаблон с именем $file_name путь к шаблону строится относительно $template_path

Перед показом шаблона необходимо методами register[s] определить все переменные которые будут использоваться в шаблоне

compile_file($file_name)

Откомпилировать файл file_name без вывода его на экран

compile_virtual_file($virt_name,$file_name)

откомпилировать файл file_name без вывода его на экран, потом его можно будет вызвать по имени несуществующего шаблона virt_name

Переменные шаблонизатора

работа с зарегистрированной переменной

переменые начинаются на знак $
$a — переменная а

работа с массивом

$a.1 — возвращает ячейку массива с индексом 1
$a.key — работа с хеш массивом

ключ тоже может быть переменной — $a.$b

более сложные варианты

Gekkon => php эквивалент

$a.1.2 => $a[1][2] $a.$b.$c => $a[$b][$a]

$a.$b&$c =>$a[$b[$c]] $a.$b&$c.$d =>$a[$b[$c]][$d]

$var.func() => func($var) - где функция с одним параметром $a.strlen() => strlen($a) $a.isset() => isset($a)

после метода .func() — можно использовать другие методы
например $a.funk().print_r()

$var->a — доступ к свойству класса
$var->a() — доступ к методу класса — параметры метода неподдерживаются
для доступа к методам с параметрами используйте управляющий тег set.

Теги шаблонизатора

Вывод

для вывода возвращаемого значения на экран используются { }
пример — {$a} {$a.1} {$a.count()} и тд.
Можно использовать выражение
пример — {$a +1} {$a + $b}

Обратите внимание

{$a.$b} и {$a. $b}

в первом случае работа с массивом в переменной $a во втором работа со строками

внимание переменные шаблонизатора должны обрамляться пробелами!!

Управляющие теги

Все управляющие теги содержатся внутри кострукции <!-- TAG -->

теги могут быть закрывающиеся и незакрывающиеся
закрывающийся — <!-- tag_name --> something <!--/tag_name -->
незакрывающийся — <!-- tag_name -->

Параметры управляющих тегов

<!-- tag_name # -->

# здесь могут быть парамеры тега параметры могуть быть стандартного вида name=value name=value или если у тебя один параметр и это описанно в описании тега то name будет отсутствовать

в параметрах стандартного вида value может быть как переменной так и константным значением

примеры <!-- tag_name param=constant_text --> <!-- tag_name param="constant text" --> <!-- tag_name param="constant 'text" --> <!-- tag_name param='constant "text' --> <!-- tag_name param=$var --> <!-- tag_name param=$var.1 --> и тд.

порядок следования параметров значения не имеет

Основные теги

comment — комментарий

незакрывающийся
поскольку кострукция тега совпадает с стандартным комментарием html, то чтобы внести комментарий в текст необходимо внести его в тег comment пример <!-- comment text text text -->

include — подключение шаблона

незакрывающийся
пример <!-- include file_name --> <!-- include $var -->

путь к шаблону строится относительно свойства класса $template_path

if — условие

закрывающийся
синтаксис условия идентичен php

внимание переменные шаблонизатора должны обрамляться пробелами!!

<!--if $a =='text' and $b.1 ==123--> some thing 1 <!--/if--> или <!--if $a =='text' and $b.1 ==123--> some thing 1 <!--else--> some thing 2 <!--/if-->

foreach — перебор значений массива

закрывающийся

пример 1 <!--foreach from=$data item=$v--> some thing 1 {$v} <!--/foreach--> рнр эквивалент foreach($data as $v) { echo 'some thing 1 ',$v; }

пример 2 <!--foreach from=$data item=$v key=$k --> some thing 2 {$k}={$v} <!--/foreach--> рнр эквивалент foreach($data as $k => $v) { echo 'some thing 2 ',$k,'=',$v; }

for — цикл

закрывающийся

пример <!--for from=1 to=10 key=$k --> {$k} <!--/for--> рнр эквивалент for($k=1;$k<10;$k++) { echo $k; }

необязательный параметр step — по умолчанию равный 1

set — присваивание переменной

незакрывающийся
синтаксис обычного рнр выражения

внимание переменные шаблонизатора должны обрамляться пробелами!!

пример <!--set $a =1 --> <!--set $a = $b +4--> <!--set $a.key = $b.5 --> <!--set $a =$b->method('p1', $d ) + $e --> и тд.

php — вставка прямого php кода

закрывающийся
доступ к переменным шаблонизатора можно получить из массива $this->data[‘var_name’] где var_name — название переменной

пример <!--php--> php code <!--/php-->

cache

закрывающийся
команда компилятору шаблона — все содержимое тега надо не только откомпилировать но и выполнить тоесть содержиное тега после компиляции превращается в чистый html