Это описание базового поведения «DokuWiki» во время отработки запроса на отображения страницы /doku.php?id=start&do=show
. У вас под рукой должны быть исходники для понимания этого процесса. Можно также использовать он-лайн версию API документации XRef. А это графическое представление процесса создания страницы диаграмма вызовов. Много деталей было опущено для упрощения этого описания.
Имя файла | Пример кода | Описание |
---|---|---|
doku.php | if(!defined('DOKU_INC')) | Все начинается с определения корневого каталога вики |
$ACT = $_REQUEST['do'] | дальше определяется тип действия которое запрашивается, например do режим | |
require_once('init.php') | с помощью init.php, инициализируется ядро | |
inc/init.php | include('preload.php') | предзагрузка делает возможным перезапись каталогов и конфигураций |
if(!defined('DOKU_CONF') | создание окружения определяет расположение кода | |
include(DOKU_INC. 'inc/config_cascade.php') | подготовка и загрузка глобальной конфигурации файла(ов) | |
global $lang; | загружает и подготавливает языковые файлы используя «английские» для всех не найденных вхождений | |
if(!defined('DOKU_REL') | создает остальные переменные_окружения которые еще не были созданы, так как зависели от конфигурационных настроек | |
if(!headers_sent() && .. | создание сессии и установка куков | |
require_once (DOKU_INC.'inc/load.php') | подгружает все библиотеки | |
… | инит контроллера плагинов, системы перехвата событий, аутентификации и выход после настройки почты | |
doku.php | $ID = getID() | возврат из init.php, очистка и передача запроса на глобальные переменные |
$INFO = pageinfo() | добавление метаданных страницы в глобальные переменные с помощью auth_quickaclcheck() и p_get_metadata(). Позже вызывается ее рендеринг, если она не кешируется. | |
if(!$INFO['exists'] … | отправляет 404 для не найденных страниц | |
trigger_event(DOKUWIKI_STARTED) | запускает плагины действий которые слушают DOKUWIKI_STARTED события | |
inc/actions.php | act_dispatch($ACT) | выполняет работы по указанному действию |
if ($evt->advise_before()) ... | позволяет плагинам переопределять обычное поведение используя событие ACTION_ACT_PREPROCESS | |
$ACT = act_clean($ACT) | очистка и перенаправление отключенных действий на действие отображения страницы do=show |
|
… | проверяет ACL-разрешения на выполнение запрошенных действий. Переменная $ACT может меняться в процессе выполнения act_dispatch(). | |
global $INFO | делает доступными глобальные переменные для кода шаблона | |
trigger_event(ACTION_HEADERS_SEND) | запускает экшен плагины по событию ACTION_HEADERS_SEND | |
include(template('main.php')) | добавляет базовый код страницы в выбранный шаблон | |
lib/tpl/default/main.php | … | главный скрипт шаблона состоит из элементов HTML дизайна с включением php запросов для наполнения контента как например метазаголовки, кнопки, элементы навигации и тд.. все находится в inc/template.php файле |
tpl_content() | здесь создаются вики-страницы | |
inc/template.php | ||
trigger_event(TPL_ACT_RENDER) | вызов tpl_content_core() по событию TPL_ACT_RENDER | |
switch($ACT) | выбор контента на основании действия, основной do=show вызывает html_show() |
|
inc/html.php | $html = p_wiki_xhtml(…) | который использует кешированную XHTML версию страницы ИЛИ запускает парсер-визуализатор для отображения закэшированных инструкции как XHTML ИЛИ использует парсер для перевода вики текста в инструкции, в первую очередь. |
inc/template.php | trigger_event(TPL_CONTENT_DISPLAY) | возврат в tpl_content(). action-плагины имеют последний шанс на модификацию сырого HTML перед его отображением по событию TPL_CONTENT_DISPLAY |
doku.php | trigger_event(DOKUWIKI_DONE) | завершение и вызов action-плагинов которые ждут DOKUWIKI_DONE события, после завершения работы главного скрипта шаблона |