Введение
Класс Framework является главным классом, который подключает остальные компоненты системы. Чтобы запустить фреймворк, достаточно подключить файл Framework.php (по умолчанию находится в папке include/cherokee/) и создать экземпляр класса:
require_once 'include/cherokee/Framework.php';
$Cherokee = Framework::instance();
Класс Framework выполняет следующие функции:
- инициализация системы (instance)
- регистрация и вызов объектов (register_object, get_object)
- изменение формата путей (transform_path)
- подключение компонентов (import, importClass)
- добавление статических переменных (addEnvironment)
Инициализация системы
При инициализации фреймворк выполняет следующие операции:
- определение пути корневой папки (где находится сайт) и УРЛа
- подключения базовой библиотеки common
- подключения компонента
Conf для управления настройками
- подключение конфигурационного файла с путями path.ini
- подключение файла настроек фреймворка framework.ini
- подключение и инициализация остальных компонентов фреймворка
После иницализации объект можно получить в любом месте кода повторным вызовом метода Framework::instance(). Дублирующей инициализации не будет.
Регистрация и вызов объектов
Для того, чтобы обеспечить удобный доступ к базовым и часто используемым объектам системы, класс Framework реализует функции для регистрации и вызовов объектов:
- void Framework::register_object($name, $object) - зарегистрировать объект $object под именем $name
- mixed Framework::get_object($name) - получить объект, зарегистрированный под именем $name
//Пример 1
class A {
public function say () {
echo 'Hello from A!';
}
}
$A = new A;
// регистрируем объект
Framework::register_object('A', $a);
// получаем объект
$B = Framework::get_object('A');
$B->say(); // 'Hello from A'
Если доступен экземпляр фреймворка, то получить объект можно через имя объекта.
// Продолжение примера 1
$Cherokee = Framework::instance();
$Cherokee->A->say(); // 'Hello from A'
Изменение формата пути
Для удобства работы в Чероки применяется альтернативный формат путей, который используется компонентами фреймворка.
Например, путь к файлу /var/www/include/cherokee/Framework.php в альтернативном формате выглядит так: main.include.cherokee.Framework~php, однако эту запись можно сократить до: cherokee.Framework. Данный формат пути имеет следующие правила
- Точка (".") является разделителем, отделяющей имя папок.
- Первая часть пути обозначает переменную из конфигурационного файла path.ini.
- Последняя часть пути является именем файла.
- Тильда ("~") заменяет точку в имени файла, перед его расширением.
Например: templates.pages.home~tmpl - путь к шаблону home.tmpl в папке home, находящейся в папке templates, путь до которой указан в path.ini.
Чтобы сконвертировать формат Чероки к обычному формату, фреймворк имеет статический метод:
- string Framework::transform_path(string $path [, string $default_ext]) - конвертирует путь $path в формате Чероки в обычный формат, возможно задать расширение файла $default_ext
// Пример 2
echo Framework::transform_path('templates.pages.home', 'tmpl'); // /home/var/www/templates/pages/home.tmpl
Подключение компонентов
Для подключения компонентов в Чероки используется статический метод import:
- void Framework::import(string $path) - подключить файл, имеющий путь $path
Путь до файла необходимо задать в формате Чероки (описано выше)
// Пример 3
Framework::import('lib.headers'); // подключить библиотечный файл headers.php
Также возможно выполнить подключение всех файлов в папке, заменив имя файла на символ астериска ('*').
// Пример 4
Framework::import('lib.*'); // подключить все библиотеки
Метод importClass подключает файл и возвращает имя класса из подключенного файла.
- string Framework::importClass(string $path)
Добавление статистических переменных
Метод addEnvironment используется для получения статистические переменных (например, время обработки страницы).
- string Framework::addEnvironment(string $content)
Метод заменит переменные в $content на их значения и вернет результат. Список возможных переменных следующий:
- {!timer} - отчет по генерации страницы
- {!gen} - время генерации страницы в секундах
- {!database} - отчет по работе БД
- {!queries} - количество уникальных запросов к БД
- {!env} - вывод переменных окружения
- {!conf} - вывод настроек
// Пример 5
$text = 'Page generation took {!gen } seconds';
echo Framework::addEnvironment($text); // пример: 'Page generation took 0.085 seconds'