SimplePHP
Материал из AOW
Содержание |
Инициализация системы
/* Подключаем библиотеку SimplePHP */
require_once("simplephp.php");
/* Создаем класс */
$simplePHP = new simplePHP();
/* Описание свойств */
$simplePHP->pathInclude = '…';
Для CMS AOW, шаблонизатор инициализируется при старте "движка" и доступен из глобальной переменой: $GLOBALS['simplephp']
Свойства шаблонизатора
Путь к КЭШу:
$pathCache = './simplePHP/cache/';
Путь к шаблонам:
var $pathInclude = './simplePHP/include/';
Префикс функции шаблона
var $prefix = 'simplePHP_fnc_';
Использовать замену тэгов '<?php ?>'
var $enable_tags = false;
Заменяющий открытия тэг '<?php' при включеном $enable_tags
var $tags_open = '(*';
Заменяющий закрывающий тэг '?>' при включенном $enable_tags
var $tags_close = '*)';
Символ или группа символов для замены \ и . в имени файла
var $replace_name = '_';
Кэшировать ли шаблоны, и использовать ли кэш. Отключить кэш еще можно указав в запросе GET значение no_cache=1
var $cache = 1;
Отключение отображения ошибок при выполнении кода шаблона
var $no_error = true;
Переменные и доступ к ним
В шаблонизаторе переменные, как и в PHP, выделяются стоящим в впереди знаком доллара ($). Переменные делятся на 3 группы: первая, с одним знаком доллара в начале ($) - это переменные, которые из области локальных данных шаблонизатора. Область данных шаблонизатора состоит из 2 частей: глобальная существующая все время жизни шаблонизатора и доступа из всех шаблонов, которая в свою очередь делится на две части: область создаваемая скрипом при инициализации и область, создаваемая и используемая шаблонами, и локальная, содержит данные конкретно для данного шаблона. Вторая группа, переменные с двумя знаками доллара в начале ($$) — это доступ к переменным вне зоны шаблонизатора, к другим переменным остальных скриптов. Третья, переменные с тремя знаками доллара в начале ($$$) — это дает возможность работать с переменными из области глобальных данных. Так же знак ($$) - двойной доллар, переназначен для экранизации знака доллара.
Область значений:
1. Глобальная область
a. Глобальные значения полученные от метода assign (доступ через $)
b. Глобальные значения заданные переменными с тремя долларами в начале ($$$) (доступ через $$$)
2. Локальная область
a. Локальные значение заданные в методах get и assign, и существующие только на момент выполнения, заданного шаблона (доступ через $)
Значения 1a и 1b находятся в разных областях глобальной области и не связаны между собой.
Использование шаблонизатора — методы класса
Метод void assign(array) – используется для подключения переменных в шаблонизатор, в глобальную часть.
Метод void display(str, array) – используется для отображения шаблона, второй параметр, массив переменных подключаемых к шаблонизатору в локальную часть.
Метод str get(str, array) – используемый для получение шаблона в переменную, второй параметр, массив переменных подключаемых к шаблонизатору в локальную часть.
Второй параметр для 2 предыдущих методов не обязателен.
Метод array/bool get_element_template (str) – получении информации по переменным в шаблоне. В итоге получим массив разбитый на 3 части: первый in - переменные с двумя долларами в начале ($$), второй out - переменные с одним долларом в начале ($), третий tmp - переменные с тремя долларами в начале ($$$).
Метод bool isCache(str) - проверка существования КЭШа для шаблона.
Метод bool isTemplate (str) - проверка существования шаблона.
Пример:
$mass = array('title' => 'Title', 'data' => array('first' => 'First Element', 'second' => 1));
/* Переменные добавляемые в шаблонизатор таким образом попадают в глобальную часть и будут доступны из все шаблонов */
$simplePHP->assign($mass);
/* Переменные подключаемые таким образом попадут в локальную часть и будут доступны при раскрутки только этого шаблона в данный момент */
$simplePHP->display('main.html', array('content' => 'Text'));
$str_data = $simplePHP->get('index1.html');
if ($t = $simplePHP->get_element_template('index1.html'))
{
print_r($t);
}
Шаблон
Шаблоном является любой текстовый файл. Код шаблона отделяется <?php ?>, если не изменен в свойствах: enable_tags, tags_open, tags_close. Для CMF AOW-SC3 при инициализации помещены в глобальную область следующие переменные:
- 'I_root' => $GLOBALS['I_root']
- 'I_admin' => $GLOBALS['I_admin']
- 'I_main_cfg' => $GLOBALS['I_main_cfg']
- 'I_main_fnc' => $GLOBALS['I_main_fnc']
- 'I_main_inc' => $GLOBALS['I_main_inc']
- 'I_main_res' => $GLOBALS['I_main_res']
- 'I_main_tmp' => $GLOBALS['I_main_tmp']
- 'I_base' => $GLOBALS['I_base']
- 'E_root' => $GLOBALS['E_root']
- 'E_admin' => $GLOBALS['E_admin']
- 'E_base' => $GLOBALS['E_base']
- 'E_main_res' => $GLOBALS['E_main_res']
- 'E_main_tmp' => $GLOBALS['E_main_tmp']
Пример.
<? /* Тут используется переменная из области переменных переданных шаблонизатором (глобальная и локальная область) */?>
<h1><?= $title ?></h1>
<? /* В данном примере переменные key и val не будут переменными шаблонизатора, и которые можно использовать в шаблоне */?>
<?= $$GLOBALS['root'] ?>
<?= $$_SESSION['shop']['item'] ?>
<? foreach ($data as $$key=>$$val) { ?>
<p><?= $$val ?></p>
<? } ?>
<? /* Так созданную переменную можно будет использовать из другого шаблона */?>
<? $$$global_value = $data['first']; ?>
<? /* вот таким вот образом */?>
<?= $$$global_value ?>
<? /* отображаем путь к темповой папке aow-sc3 */?>
<?= $E_main_tmp ?>
<? /* вызываем функцию PHP */?>
<?= print_r($data) ?>
Надстройки
Все надстройки располагаются в incledes.php или файлах подключенных через него. Для доступу к экземпляру класса simplePHP в шаблоне служит переменная $simplePHP. Доступ к области данных шаблона: $simplePHP->data - глобальные данные, $simplePHP->data_out - используемые в данное время в шаблоне, $simplePHP->data_temp - глобальные данные доступные по трем долларам ($$$).
Пример:
Файл с надстройками:
<?php
function simple_include_file($simplePHP, $file, $data=array())
{
$simplePHP->display($file, $data);
}
function simple_10_no($text=)
{
if ($text)
{
return str_repeat($text, 10);
}
else
{
return str_repeat('no', 10);
}
}
?>
Шаблон:
Пример
10 No <?= simple_10_no() ?>
10 kaka <?= simple_10_no('kaka') ?>
<? simple_include_file($simplePHP, 'index2.html'); ?>
Выдержка из документации
Class simplePHP Description Description | Vars (details) | Methods (details)
Класс simplePHP
* version: 0.5 * copyright: 2008 * author: Kerov Vadim
Located in /simplephp.php (line 16)
Variable Summary Description | Vars (details) | Methods (details) int $cache array $data array $data_out array $data_temp bool $enable_tags bool $no_error string $pathCache string $pathInclude string $prefix string $replace_name string $tags_close string $tags_open Method Summary Description | Vars (details) | Methods (details) simplePHP __construct () none assign (array $data) void display (string $template, [array $data = array()]) string get (string $template, [array $data = array()]) array get_element_template (string $template) bool isCache (string $template) bool isTemplate (string $template) Variables Description | Vars (details) | Methods (details) int $cache = 1 (line 84)
Кэшировать ли шаблоны, и использовать ли кэш
* var: = 1
array $data = array() (line 66)
Данные передоваемые в шаблонизатор - глобальные array $data_out = array() (line 72)
Данные передоваемые в шаблонизатор - используемые только в задданом шаблоне + глобальные array $data_temp = array() (line 78)
Данные передоваемые в шаблонизатор - временые, создаваемые в определеном шаблоне и доступные в других bool $enable_tags = false (line 42)
Использовать замену тэгов '<?php ?>'
* var: = false
bool $no_error = true (line 90)
Отключение отображения ошибок при выполнении кода шаблона
* var: = true
string $pathCache = './simplePHP/cache/' (line 24)
Путь к кэшу
* var: = './simplePHP/cache/'
string $pathInclude = './simplePHP/include/' (line 30)
Путь к шаблонам
* var: = './simplePHP/include/'
string $prefix = 'simplePHP_fnc_' (line 36)
Префик функции шаблона
* var: = 'simplePHP_fnc_'
string $replace_name = '_' (line 60)
Символ или группа символов для замены \ и . в имени файла
* var: = '_'
string $tags_close = '*)' (line 54)
Заменяющий закрывающий тэг '?>' при включеном $enable_tags
* var: = '*)'
string $tags_open = '(*' (line 48)
Заменяющий открытия тэг '<?php' при включеном $enable_tags
* var: = '(*'
Methods Description | Vars (details) Methods (details) Constructor __construct (line 96)
Конструктор simplePHP simplePHP __construct () assign (line 109)
Подключение переменых в шаблон, данные подключаются в глобальную часть шаблонизатора (будут доступны во всех шаблонах)
* access: public
none assign (array $data)
* array $data
display (line 169)
Отображение шаблона с применением к нему списка временых переменых $data
* access: public
void display (string $template, [array $data = array()])
* string $template * array $data
get (line 183)
Получение обработаного шаблона с применением к нему списка временых переменых $data
* access: public
string get (string $template, [array $data = array()])
* string $template * array $data
get_element_template (line 127)
Получение данных о переменых входящих в заданный шаблон
* return: out) - in - внутрене шеблоные переменые '$$', out - внешние переменые '$', tmp - переменые которое могут задаваться в шаблоне и использоваться за пределами данного шаблона '$$$' * access: public
array(in, get_element_template (string $template)
* string $template
isCache (line 274)
Проверка закэширован ли шаблон, и актуальный ли кэш, актуальность проверяется по дате последнего изменения файла (!) TODO: по размеру файла
* access: public
bool isCache (string $template)
* string $template
isTemplate (line 299)
Проверка существования шаблона
* access: public
bool isTemplate (string $template)
* string $template

