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

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


wiki:overview

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


Обзор ядра

Это описание базового поведения «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') '' подгружает все библиотеки
'' …
auth_setup()
… ''
инит контроллера плагинов, системы перехвата событий, аутентификации и выход после настройки почты
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
'' …
$ACT = act_permcheck($ACT)
… ''
проверяет ACL-разрешения на выполнение запрошенных действий. Переменная $ACT может меняться в процессе выполнения act_dispatch().
'' global $INFO
global $conf ''
делает доступными глобальные переменные для кода шаблона
'' trigger_event(ACTION_HEADERS_SEND) '' запускает экшен плагины по событию ACTION_HEADERS_SEND
'' include(template('main.php')) '' добавляет базовый код страницы в выбранный шаблон
lib/tpl/default/main.php '' …
tpl_metaheaders()
… ''
главный скрипт шаблона состоит из элементов 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 события, после завершения работы главного скрипта шаблона
Только авторизованные участники могут оставлять комментарии.
wiki/overview.1692361631.txt.gz · Последнее изменение: (внешнее изменение)

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki