Реализуем внутреннюю архитектуру CMS. Часть вторая

Ноябрь 7, 2007

Поскольку мы уже определились с физической структурой нашей будущей системы — переходим к действию.

Создадим карту директорий, дабы потом было проще ориентироваться и подключать файлики. Файл этот будет весь обвешан Define-ами, поэтому создаем его в директории kernel/defines/ и называем paths.php

Что мы сюда будем закладывать?

В первую очередь — создадим алиасы всех директорий нашей системы.

<?php

define ('ROOT_DIR', $_SERVER['DOCUMENT_ROOT']);
define ('SCRIPT_DIR', ROOT_DIR.'/'.'selfcms');
define ('KERNEL_DIR', SCRIPT_DIR.'/'.'kernel');
define ('DEFINES_DIR', KERNEL_DIR.'/'.'defines');
define ('CONFIGS_DIR', DEFINES_DIR.'/'.'configs');
define ('CONFIGS_DIR', LANGS_DIR.'/'.'langs');
define ('CLASSES_DIR', KERNEL_DIR.'/'.'classes');
define ('LIBS_DIR', KERNEL_DIR.'/'.'libs');

define ('APP_DIR', SCRIPT_DIR.'/'.'app');
define ('VIEWS_DIR', APP_DIR.'/'.'views');
define ('COMS_DIR', APP_DIR.'/'.'coms');
define ('MODS_DIR', APP_DIR.'/'.'mods');
define ('BOTS_DIR', APP_DIR.'/'.'bots');
define ('TEMPLATES_DIR', APP_DIR.'/'.'templates');

?>

Это маленький кусочек кода приведен лишь для того, чтобы дать Вам понять как выглядит данный файл.

Прошу обратить внимание на то, что в скрипте ни разу не использовались двойные кавычки. Почему это есть хорошо?

Со структурой обращения к скриптам мы выяснили... Теперь подумаем — зачем нужно использовать константы, чтобы хранить в них длинные абсолютные пути если можно воспользоваться короткими относительными?

Это закономерный вопрос, который стоит уяснить сразу: за время написания системы наша cms вырастет из 1-го файла и 10 папок в большой скрипт с большим количеством файлов. Чтобы включить каждый файл (чего мы делать, конечно же не будем) может потребоваться до 10-30 итераций (шагов). Экспериментальным путём выяснили: включение файла через относительный путь тормозит процесс инклуда в 3-5 раз. Достигается это тем, что файл-родитель (кто включает) (при обнаружении того факта, что путь относительный) обращается к серверу за определением его местонахождения, потом сравнивает с путем включаемого файла, и лишь потом выполняет нужное нам действие.

А так, как таскать за собой длинные пути к папкам и директориям мало кому приятно — решаем проблему контстантами. Они видны внутри любой функции и любого класса, что позволяет использовать их в любом участке кода.

Так же, условимся включать в заголовок каждого файла-скрипта слелующий код:

if (!defined ('ACCESS_ALLOW'))
{ die ('Ошибка! Прямой доступ к файлу невозможен!');
}

Для чего это нужно: любой пользователь, который набрал в своем браузере ваш домен НЕ должен общаться ни с каким файлом, кроме как index.php. Создав константу ACCESS_ALLOW в index.php и используя проверки в каждом файле скрипта вы убережете себе кучу нервов (конечно, это самый примитивный метод защиты, но необходимый).

1 комментарий на “Реализуем внутреннюю архитектуру CMS. Часть вторая”

  1. РЕалиСтЕгНах высказал:

    Аффтвар Пеши исчо