Engine. Документация.
Engine представляет собой набор классов для различных задач: вывод HTML-страниц, сбор информации, работы с BD, а также библиотеку часто используемых функций. Движок для работы использует модули, расположенные в поддиректории modules проекта. Название модуля для запуска определяется по переменной запроса show.
Краткое описание основных классов.
config.class.php – класс для загрузки конфигурационных файлов. Взят из Smarty.
db.class.php - абстрактная работа с базой данной. В данный момент есть только реализация для MySQL
engine.class.php - главный класс движка. Его нужно подключить в проект, использующий движок.
info.class.php - для сбора информации о пользователе: используемая ОС, броузер, IP-адрес и др.
render.class.php - класс для работы с шаблонизатором. В качестве шаблонизатора используется Smarty.
system.class.php - для вывода системных сообщений
timer.class.php - для замеров интервалов времени
basemodule.class.php – от этого класса должны быть унаследованы все модули, используемые в проекте.
Настройка движка
Конфигурационный файл движка должен находится в директории проекта и называться engine. cfg.
Это обычный конфигурационный файл Smarty.
Список настроек:
default_module – имя модуля по умолчанию.
db_host, db_user, db_pass, db_base – параметры для автоподключения к БД. Если хоть один из них отсутствует, автоподключение не происходит.
db_debug_level – режим отладки модуля БД. Может принимать значения:
0 = нет отладки
1 = выводить сообщения об ошибках
2 = выводить отладочную консоль
3 = выводить сообщения об ошибках и консоль
check_robots – проверять поисковых роботов (1) или нет (0)
render_debug – режим отладки Smarty – есть (1) или нет (0)
Подробное описание модулей
config.class.php
см. документацию по Smarty
db. class. php
Предоставляет класс database для абстрактной работы с БД. Для получения экземпляра класса, используйте функцию &getDB(), она доступна всюду.
function connect($host, $user, $password)
- подключение к БД
function select_db($db_name)
- выбор БД
function close()
- закрыть последнее подключение
function query($query)
- выполнить запрос query. Возвращает идентификатор результата
function select_one($table, $value, $id = 'id')
- выбрать одну запись из таблицы table по значению value. id – название поля. Удобно для выбора по уникальному id
function delete_one($table, $value, $id = 'id')
- удалить одну запись из таблицы table по значению value. id – название поля. Удобно для удаления по уникальному id
function get_result($result_id)
- получить результат в виде объекта.
function get_result_array($result_id)
- получить результат в виде массива.
function num_rows($result_id)
- получить число строк в результате
function affected_rows()
- получить число строк, затронутых запросом.
function insert_id()
- получить значение id только что вставленной строки
function error()
- получить описание последней ошибки
function errno()
- получить номер последней ошибки
Пример.
Вывести поля login всех записей из таблицы users базы site.
$db = &getDB(); $db->connect(‘localhost’, ‘user’, ‘password’); $db->select_db(‘site’); $sql = “SELECT * FROM `users`”; $result = $db->query($sql); while ($r = $db->get_result) { echo “$r->login<br>”; } $db->close(); |
engine.class.php
Класс Engine используется для запуска модулей. Для получения объекта этого класса используйте функцию &getEngine().
function setModulesDir($path)
устанавливает директорию с модулями
function setClientPath($path)
устанавливает директорию проекта
function init()
производит инициализацию всех компонентов движка. Должна быть вызвана после setModulesDir и setClientPath, до других действий с движком.
function run()
производит запуск движка.
function shutdown()
удаление движка из памяти
function krotConfigVar($var, $default = '')
возвращает переменную конфигурации движка
function krotDie($message = '')
убивает движок и вызывает die($message)
Пример. Файл index.php проекта.
include_once '../engine/core/engine. class. php'; $engine = &getEngine(); $engine->setModulesDir(getcwd().'/modules/'); $engine->setClientPath(getcwd()); $engine->init(); $engine->run(); $engine->shutdown(); |
info.class.php
Предоставляет класс Info для сбора информации. Для получения экземпляра класса, используйте функцию &getInfo(), она доступна всюду.
function getIP()
возвращает IP пользователя
function getForwardedIP()
возвращает реальный IP, если пользователь сидит за proxy-сервером
function getReferer()
возвращает реферер – страницу, с которой произошел переход на данную
function getRefererSite()
возвращает сайт реферера
function getRefererQuery()
возвращает запрос реферера
например, переход произошел со страницы http://www. /one. php? golink=13
тогда getReferer() вернет http://www. /one. php? golink=13
getRefererSite() - http://www.
getRefererQuery() - one. php? golink=13
function getUserAgent()
возвращает полное описание броузера и системы пользователя
function getBrowser()
возвращает название броузера, например “MSIE”, “Firefox”
function getBrowserVer()
возвращает версию броузера, например “5.01”
function getSystem()
возвращает навание ОС, например “Windows”, “FreeBSD”
function getSystemVer()
возвращает версию системы, например “XP”, “NT”
function isRobot()
возвращает true, если пользователь является поисковым роботом и false в противном случае. Работает только при включенной настройке движка check_robots
Пример. Вывести название и версию системы пользователя.
$info = &getInfo(); $system = $info->getSystem(); $sys_ver = $info->getSystemVer(); echo “your system is: $system $sys_ver”; |
render.class.php
Предоставляет класс Render для сбора информации. Для получения экземпляра класса, используйте функцию &getRender(), она доступна всюду.
function eval_template($content)
выводит результат обработки шаблона. Content – текст шаблона
function fetch_template($content)
возвращает результат обработки шаблона. Content – текст шаблона
В остальном - см. документацию по Smarty
system. class. php
Предоставляет класс System для вывода системных сообщений. Для получения экземпляра класса, используйте функцию &getSystem(), она доступна всюду.
Все шаблоны сообщений должны находиться в директории project_dir/templates/messages/
function showErrorText($text)
Выводит сообщение об ошибке - text. Шаблон – error. tmpl
function showError($code)
Выводит сообщение об ошибке по его коду. Вы можете определить стандартные сообщения как переменные конфигурации рендера(Smarty). Тогда все переменные с префиксом error_ распознаются как сообщения об ошибках.
code – имя такой переменной без префикса error_
function showInfo($code)
Выводит информационное сообщение - text. Шаблон – info. tmpl
function showInfoText($text)
Выводит информационное сообщение по его коду. Вы можете определить стандартные сообщения как переменные конфигурации рендера(Smarty). Тогда все переменные с префиксом info_ распознаются как информационные сообщения. code – имя такой переменной без префикса info_
timer.class.php
Предоставляет класс Timer для замера интервалов времени. Для получения экземпляра класса, используйте функцию &getTimer(), она доступна всюду.
function start()
Начать замер времени
function stop()
Остановить замер
function getInterval()
Возвращает продолжительность замеренного интервала
function getTime()
Возвращает текущее время с точностью до микросекунд
Разработка модуля.
Модули располагаются в директории modules проекта, использующего движок.
Каждый модуль располагается в отдельной директории, имя которой совпадает с именем модуля. Модуль представлен классом, имя которого – имя модуля с приставкой mod.
Движок определяет какой модуль вызывать по переменной запроса show
Например:
Пусть проект расположен в папке /proxy, путь модулей: /proxy/modules
Наш модуль называется total. Тогда он должен быть расположен в директории
/proxy/modules/total. Название файла: total. class. php, он должен содержать класс modTotal.
Структура модуля.
Любой модуль должен быть унаследован от класса BaseModule, предоставляемым движком.
Для запуска модуля движок использует несколько функций, которые должен содержать ваш класс. Все они реализованы в классе BaseModule и при необходимости их можно переопределить в вашем модуле. Обязательно необходимо переопределить функцию show, остальные – по желанию.
Функции (в порядке вызова):
init() – вызывается первой при запуске модуля. Используйте ее для инициализации своего модуля, например для загрузки конфигурации из файлов.
checkPermissions() – если возвращает false, загрузка прерывается. Используйте для проверки прав на использование модуля, если в проекте это требуется. По умолчанию (если не переопределять из BaseModule) возвращает true.
show() – главная функция, используется для вывода страницы. Обязательно должна быть переопределена из BaseModule.
shutdown() – вызывается последней, используйте для деинициализации, если она необходима.
Пример модуля:
<?
class modMyFirst extends BaseModule
{
function modMyFirst()
{
}
function show()
{
$render = &getRender();
$userman = &getUserManager();
$render->show('header. tmpl');
echo "welcome to our site!!!";
$render->show('footer. tmpl');
}
}
?>


