Что в выпуске? Начало проектирования прототипа ОСС на языке
PHP5:
пространство имен, набросок дерева каталогов и их функциональное назначение,
требования к новому прототипу.
Приветствую всех! Этим небольшим
выпуском я начинаю рассказ о создании второго прототипа на PHP5.
Предполагаю, что вы неплохо разбираетесь в программировании вообще и в частности
на PHP. В противном случае задавайте вопросы. Вся система
будет создаваться, используя все возможности PHP5 и
XML+XSLT.
Некоторые соглашения
Начну я с некоторых соглашений. Для начала определимся с пространством имен.
Систему я назову
Sultana (или по-русски Изюминка) и
поэтому, все классы будут начинаться с префикса sf (Sultana Framework).
Пока это все. Остальные имена обозначу по ходу повествования.
Пути к файлам я буду обозначать от веб-каталога. Допустим ваш веб-каталог
располагается по адресу:
z:/home/prototype/www. Тогда вместо абсолютного пути,
например, z:/home/prototype/www/sultana/conf/register.xml
буду указывать локальный путь, соответственно примеру /sultana/conf/register.xml.
Также обозначу первое представление дерева каталогов:
Каталог
Пояснения
/sultana/
Все файлы системы и данных сайтов
находятся в отдельном каталоге. Предполагается, что этот каталог
задается при установке системы. Таким образом, рядом с ОСС можно
устанавливать и другие системы.
/sultana/data/
Различные данные, скапливающиеся по
ходу работы системы. То есть, если требуется создавать резервную копию,
то этот каталог нужно сохранять целиком. Правда, для полной резервной
копии данных требуется дополнительно сохранять и внешние хранилища,
например, базу данных в MySQL.
/sultana/data/conf/
В этом каталоге будут храниться общие
конфигурационные файлы, относящиеся как к ядру, так и ко всем сайтам.
Конфигурационные файлы я тоже отношу к данным сайтов, которые подлежат
резервному копированию, ибо они несут информацию о связях между
различными данными.
/sultana/data/sites/
Файлы-данные, относящиеся к отдельным
сайтам. В каталоге присутствуют подкаталоги, для каждого сайта свой.
/sultana/data/common/
Общие файлы-данные, создаваемые
компонентами и приложениями и относящиеся ко всей системе и всем сайтам.
/sultana/templates/
Шаблоны. Шаблоны считаются общими для
всех сайтов. К общим также относится база учетных записей. Более
подробно структуру этого каталога я буду рассматривать далее в выпусках.
Каталог с шаблонами я не считаю необходимым для обязательного резервного
копирования.
/sultana/system/
Все скрипты располагаются в отдельном
каталоге. Считается, что этот каталог только для чтения. То есть,
скрипты-приложения в свой каталог ничего не пишут. Если им требуется
создавать файлы с данными, то они их создают в каталогах сайтов либо в
каталоге /sultana/data/common/. Каталог
/sultana/system/ тоже не предназначен для резервного
копирования. Ибо при восстановлении сайтов в конфигурационных файлах
будут перечислены все компоненты и приложения, которые следует просто
установить из дистрибутивов. Нет смысла делать резервные копии
дистрибутивов.
/sultana/system/applications/
Приложения системы. Каждое приложение в
своем каталоге.
/sultana/system/components/
Компоненты ядра. Каждый компонент в
своем каталоге.
/sultana/system/libraries/
Общие библиотеки.
/sultana/temp/
Для временных файлов. Считается, что в
любой момент времени этот каталог можно почистить. В нем будут
храниться, к примеру, кэши страниц и прочие подобные временные файлы.
Требования к прототипу
Пока обойдемся без создания контрольной панели для прототипа.
Ибо контрольную панель делать крайне долго и без создания фундамента
бессмысленно. Потому контролировать прототип будем вручную, правя
конфигурационные файлы. Прототип будем делать исходя из следующих требований:
Мультисайтовость. Сайты это отдельный каталог для
файлов, один или несколько доменных имен, ссылающихся на этот каталог, реестр
сайта в качестве конфигурационного файла. В реестре будет определяться общие
свойства сайта (название, слоган, версия, автор, тема, шаблон разделов
по-умолчанию и т. п.) и навигатор по сайту.
Виртуальные пути. Можно будет задавать шаблоны
запросов в виде регулярного выражения для любого раздела сайта. Шаблоны путей к
разделам обычно будут устанавливаться автоматически приложениями, но будет
возможность установки вручную.
Установка/удаление компонент и приложений. Нужна
полуавтоматическая установка приложений через консоль управления ядром системы.
Навигатор сайта с базовыми возможностями. Ну, с самыми
необходимым возможностями. Пока не будем заморачиваться с возможностью создания
меню страниц раздела, расширенные свойства и метатеги раздела, ссылки и пр.
Небольшая библиотека XSL-шаблонов
для стандартных элементов. Придется сделать, чтобы увидеть в окне броузера
хотя бы строки "Здравствуй, мир!".
Возможность задавать шаблоны для разделов сайта.
Опять-таки, без этого мы ничего не увидим на экране. Шаблоны будут поддерживать
простейшие возможности по разметке областей вывода.
В итоге, должна получиться система, в которой практически
ничего нет, кроме ручного создания навигации и установки приложений. Приложение
мы какое-нибудь напишем, которое будет выводить строку "Здравствуй,
мир!" и может еще чего-нибудь делать. Но главное, на этом
прототипе вы увидите начало моей задумки. А потом пойдем совершенствовать
прототип.
На этом я пока остановлюсь. Следующий выпуск выйдет через две
недели, не позже 28-го мая.Задержка связана с моим
переездом в Ташкент из Санкт-Петербурга. До следующего выпуска!
В следующем выпуске:
описание стартового скрипта, конфигурационных файлов, ну, и еще что-нибудь.
Всего доброго!
С вами был Хусамов Сухроб из Санкт-Петербурга.
ВНИМАНИЕ, если нет
явного запрета, письма могут быть опубликованы в рассылке, полностью или
частично. Адреса почты я обычно не указываю, если специально об этом не
попросите.
Если есть возможность прорекламировать друг друга в своих
рассылках, если вы ведете или готовы вести рассылку по обучению Парсеру,
обязательно пишите мне об этом.