Дмитрий Сергеевич (axshavan) wrote,
Дмитрий Сергеевич
axshavan

Про веб

В своей первой версии движка для сайтов я отказался от компонентного подхода к построению движла. Скрипт ядра парсил исполняемый скрипт, находил в нем функции, совпадающие с соглашением об именах, и подключал эти функции, лежащие отдельно в файлах.
Сейчас я подумываю вернуться к компонентному подходу. Но хочу позволить нестрогое построение компонентов. Если, к примеру, обычно компонент содержит строгую структуру папок и файлов, позволяющую осуществлять с ним унифицированную работу, то сейчас я хочу сделать обязательным только один файл – так сказать, входную точку компонента. В ядре будет встроенная функция include_component(string component_name), которая будет искать и инклудить соответствующую точку входа, с соответствующей обработкой ошибок, ну, все как положено. По идее, в точке входа компонента могут быть просто перечислены все используемые в компоненте функции. Это если компонент простой.
В таблице ветвей виртуального дерева сайта в поле SCRIPT будет относительный путь исполняемого скрипта относительно корневой директории компонента. Если он не указан, то, соответственно, никакой скрипт иклудиться не будет, но все равно будет вызвана функция include_component(). В точке входа компонента, таким образом, можно располагать и исполняемые скрипты, и все-все-все, что только заблагорассудится. С точки зрения идеологии изнутри движка все выглядит гладко: компонент подключен, но, так как не указан исполняемый скрипт, то он подключен не будет, и будет выдано предупреждение. А так как в ядре должен сидеть обработчик ошибок, то и это предупреждение может быть скрыто.
Итак, стало быть, таблица ветвей виртуального дерева будет выглядеть так:
VIRTUAL_TREE
------------
ID_BRANCH
PERENT_ID
NAME
LAYOUT
COMPONENT
SCRIPT

LAYOUT – это основной шаблон (за термин спасибо Мисате), которого, по идее, может и не быть, наверное.

За время своего отпуска надо полностью разработать алгоритм работы движка, вместе с кэшированием и всякими обработчиками.

Блок-схема

На рисунке изображен примерный алгоритм работы движка. Жирной линией обозначен стандартный путь работы, с кэшем php, но без кэша html.
Теперь главное – надо придумать, как определять, надо ли перестраивать кэш html и php процессору шаблонов. В ядре движкка должна быть функция kill_all_cache(void), чтоб, как этот ясно из названия, убиватьт весь кэш, как файлы, так и кэш-таблицу.

Для гостя:
1) запрос к БД, одновременно к кэш-табице и к таблице ветвей дерева.
2) запрос к БД для выковыривания инфы об отображаемом на экране в центральном модуле.
Всё.
Для залогиненного пользователя будет еще запрос к БД для вытаскивания информации из таблицы сессий, запрос к БД для вытаскивания данных о пользователе, и еще запрос (или можно без него обойтись, хз) для узнавания прав.
Умолчания – это круто. Только нельзя забывать, что и когда умолчано. Надо про них отдельно написать.
Tags: backdate, web
Subscribe

  • Ворчание по поводу политики

    У нас тут местное правительство ещё сильнее, чем было, ебанулось и охуело, и напринимало какие-то странные законы, которые выглядят как попытки…

  • Фотографии из мини-походика 18 июля

    На прошлой неделе мы со Славкой прошли пешком чуть больше 19 километров по южным предместьям Праги. Я выбрал маршрут таким образом, чтоб там были и…

  • Инопланетный чертополох

    Пару дней назад ходили вечером гулять по окрестностям. Я повстречал возле пруда Асуан заросли какой-то инопланетной херни. Это такие шипастые шары…

  • Post a new comment

    Error

    Comments allowed for friends only

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments