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

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

  • Показать исходный текст
  • История страницы
  • Ссылки сюда
  • Оставить на чай
  • Экспорт в PDF
  • Наверх

  • 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 события, после завершения работы главного скрипта шаблона

    Обсуждение

    Ваш комментарий:

    Внимание! Оставляя комментарий Вы соглашаетесь с пониманием и несете ответственность за свои действия гл.2 ст.18 Федерального закона №38-ФЗ «О рекламе» и ст.3 п.1 Федерального закона №152-ФЗ «О персональных данных»
    168 +10 = 
     
    wiki/overview.txt · Последнее изменение: 2023/08/18 15:27 — vladpolskiy