Шаблон при помощи класса Gekkon компилируется в php файл и сохраняется в отдельную папку
Во время вызова шаблона проверяется наличие его откомпилированной версии если файл откомпилирован то вызывается откомпилированная версия иначе файл компилируется а потом вызываетя откомпилированная версия
Также файл будет перекомпилирован если его изменить
Работа с откомпилированными версиями происходит прозрачно вызывается только файл шаблона
Пример подключения —
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. После создания обьекта — свойства можно переопределить
Регистрирует переменную $value в шаблонизаторе тип переменной может быть любой с именем $name
при этом создается копия переменной!!!
Тоже самое что и register($name,$value), только переменная регистрируется как указатель на существующую переменную
Показывает шаблон с именем $file_name путь к шаблону строится относительно $template_path
Перед показом шаблона необходимо методами register[s] определить все переменные которые будут использоваться в шаблоне
Откомпилировать файл 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
во втором работа со строками
внимание переменные шаблонизатора должны обрамляться пробелами!!
Все управляющие теги содержатся внутри кострукции
теги могут быть закрывающиеся и незакрывающиеся
закрывающийся —
незакрывающийся —
# здесь могут быть парамеры тега параметры могуть быть стандартного вида 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 -->
и тд.
порядок следования параметров значения не имеет
незакрывающийся
поскольку кострукция тега совпадает с стандартным комментарием html,
то чтобы внести комментарий в текст необходимо внести его в тег comment
пример
<!-- comment text text text -->
незакрывающийся
пример
<!-- include file_name -->
<!-- include $var -->
путь к шаблону строится относительно свойства класса $template_path
закрывающийся
синтаксис условия идентичен 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-->
закрывающийся
пример 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 from=1 to=10 key=$k -->
{$k}
<!--/for-->
рнр эквивалент
for($k=1;$k<10;$k++)
{
echo $k;
}
необязательный параметр step — по умолчанию равный 1
незакрывающийся
синтаксис обычного рнр выражения
внимание переменные шаблонизатора должны обрамляться пробелами!!
пример
<!--set $a =1 -->
<!--set $a = $b +4-->
<!--set $a.key = $b.5 -->
<!--set $a =$b->method('p1', $d ) + $e -->
и тд.
закрывающийся
доступ к переменным шаблонизатора можно получить из массива $this->data[‘var_name’]
где var_name — название переменной
пример
<!--php-->
php code
<!--/php-->
закрывающийся
команда компилятору шаблона — все содержимое тега надо не только откомпилировать но и выполнить
тоесть содержиное тега после компиляции превращается в чистый html