wiki:devel:overview
Обзор ядра
Это обзор исходного кода во время запроса на /doku.php?id=start&do=show
объяснение основ DokuWiki. Вам необходимо иметь полный исходный код, чтобы полностью насладиться этим путешествием, когда вы читаете это. Используйте ссылки XRef чтобы получить просматриваемую версию исходного кода. Также доступна более подробная страница callgraph включая процесс рендеринга. Многие детали опущены в этом описании, чтобы сделать его более простым.
Filename | Code snippet | Description |
---|---|---|
![]() | if(!defined('DOKU_INC')) | Все начинается здесь с определения базового каталога кода. |
$ACT = $_REQUEST['do'] | Далее мы определяем, какое действие запрашивается, то есть режимы do | |
require_once('init.php') | перейти к init.php, инициализировать ядро | |
![]() | include('preload.php') | предварительная загрузка preload позволяет переопределять каталоги и каскад конфигураций |
if(!defined('DOKU_CONF') | создать среду environment определяющую местоположение кода | |
include(DOKU_INC. 'inc/config_cascade.php') | подготовить и загрузить глобальный файл(ы) конфигурации configuration | |
global $lang; | загрузите и подготовьте language файлы, используя английский язык для всех отсутствующих записей | |
if(!defined('DOKU_REL') | создать все определения среды environment которые еще не определены, что может зависеть от настроек конфигурации config | |
if(!headers_sent() && .. | инициализация сеанса и установка cookie | |
require_once (DOKU_INC.'inc/load.php') | autoload всех библиотек | |
… | инициализирует контроллер плагина, event handling систему обработки событий , аутентификацию и выход после настройки почты | |
![]() | $ID = getID() | вернуться из init.php, очистить и превратить запрос в глобальные переменные global variables |
$INFO = pageinfo() | добавить метаданные страницы metadata в глобальную переменную global variable, это включает вызов auth_quickaclcheck() и p_get_metadata(). Последний вызывает рендеринг метаданных страницы, если они не кэшированы. | |
if(!$INFO['exists'] … | отправьте 404 для отсутствующих страниц | |
trigger_event(DOKUWIKI_STARTED) | плагины вызова действий action plugins, подписывающиеся на событие DOKUWIKI_STARTED | |
![]() | act_dispatch($ACT) | выполнять работу в зависимости от действия action |
if ($evt->advise_before()) ... | разрешить плагинам переопределять поведение по умолчанию с помощью события ACTION_ACT_PREPROCESS | |
$ACT = act_clean($ACT) | дезинфицировать и перенаправлять отключенные disabled actions действия do=show |
|
… | вызовите код обработки для запрошенного действия(й) при проверке необходимых разрешений ACL . $ACT может измениться во время act_dispatch(). | |
global $INFO | сделать глобальные переменные доступными для кода шаблона | |
trigger_event(ACTION_HEADERS_SEND) | плагины действий action plugins вызова , подписывающиеся на событие ACTION_HEADERS_SEND | |
include(template('main.php')) | к выбранному шаблону основного скрипта | |
![]() | … | Основной скрипт шаблона template состоит из элементов дизайна HTML , вызывающих методы PHP для такого контента, как метазаголовки, кнопки, элементы навигации и т. д. Все они доступны в файле inc/template.php |
tpl_content() | здесь создается настоящая вики-страница | |
![]() |
||
trigger_event(TPL_ACT_RENDER) | вызов tpl_content_core() с использованием события TPL_ACT_RENDER | |
switch($ACT) | выбор контента на основе действия, основные do=show вызовы html_show() |
|
![]() | $html = p_wiki_xhtml(…) | который использует cached XHTML кэшированную версию страницы ИЛИ запускает renderer для отображения кэшированных инструкций в виде XHTML ИЛИ использует parser для предварительного преобразования текста вики в инструкции. |
![]() | trigger_event(TPL_CONTENT_DISPLAY) | у плагинов действия есть последний шанс отредактировать необработанный HTML перед выводом с помощью события TPL_CONTENT_DISPLAY event |
![]() | trigger_event(DOKUWIKI_DONE) | завершить вызовом action plugins подписавшихся на событие DOKUWIKI_DONE когда основной скрипт шаблона завершен |
Только авторизованные участники могут оставлять комментарии.
wiki/devel/overview.txt · Последнее изменение: — 127.0.0.1