Инструменты пользователя

Инструменты сайта


wiki:devel:overview

Это старая версия документа!


Обзор ядра

Это обзор исходного кода во время запроса на /doku.php?id=start&do=show объяснение основ DokuWiki. Вам необходимо иметь полный исходный код, чтобы полностью насладиться этим путешествием, когда вы читаете это. Используйте ссылки XRef чтобы получить просматриваемую версию исходного кода. Также доступна более подробная страница callgraph включая процесс рендеринга. Многие детали опущены в этом описании, чтобы сделать его более простым.

Filename Code snippet Description
doku.php if(!defined('DOKU_INC')) Все начинается здесь с определения базового каталога кода.
$ACT = $_REQUEST['do'] Далее мы определяем, какое действие запрашивается, то есть режимы do
require_once('init.php') перейти к init.php, инициализировать ядро
:&13: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 всех библиотек

auth_setup()
инициализирует контроллер плагина, event handling систему обработки событий , аутентификацию и выход после настройки почты
doku.php $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
:&13:actions.php act_dispatch($ACT) выполнять работу в зависимости от действия action
if ($evt->advise_before()) ... разрешить плагинам переопределять поведение по умолчанию с помощью события ACTION_ACT_PREPROCESS
$ACT = act_clean($ACT) дезинфицировать и перенаправлять отключенные disabled actions действия do=show

$ACT = act_permcheck($ACT)
вызовите код обработки для запрошенного действия(й) при проверке необходимых разрешений ACL . $ACT может измениться во время act_dispatch().
global $INFO
global $conf
сделать глобальные переменные доступными для кода шаблона
trigger_event(ACTION_HEADERS_SEND) плагины действий action plugins вызова , подписывающиеся на событие ACTION_HEADERS_SEND
include(template('main.php')) к выбранному шаблону основного скрипта
lib/tpl/dokuwiki/main.php
tpl_metaheaders()
Основной скрипт шаблона template состоит из элементов дизайна 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(…) который использует cached XHTML кэшированную версию страницы ИЛИ запускает renderer для отображения кэшированных инструкций в виде XHTML ИЛИ использует parser для предварительного преобразования текста вики в инструкции.
inc/template.php trigger_event(TPL_CONTENT_DISPLAY) у плагинов действия есть последний шанс отредактировать необработанный HTML перед выводом с помощью события TPL_CONTENT_DISPLAY event
doku.php trigger_event(DOKUWIKI_DONE) завершить вызовом action plugins подписавшихся на событие DOKUWIKI_DONE когда основной скрипт шаблона завершен
Только авторизованные участники могут оставлять комментарии.
wiki/devel/overview.1735904973.txt.gz · Последнее изменение: vladpolskiy