Введение

Класс 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'