Создание своей PHP CMS на основе модулей и шаблонов Часть 2.1 — Ядро

Своя php cms, Own php cmsИтак у нас уже есть основа для нашей системы. Но ядро пока что пустовато. Оно умеет пока что только соединяться с базой данных. В этой статье мы продолжим собирать наше ядро, и прикручивать такие возможности как инициализация модулей и их создание. Так как наша система CMS будет создаваться по по принципу MVC (Model-View-Controller), нам необходима основа которая будет выполнять связь между 3-мя этими элементами модуля. В роли маршрутизатора запросов (файл который будет направлять запросы по параметрам GET к нашим модулям) будет rout.php который мы разместим в папочке core (ядро).

Файл будет иметь следующий вид:


if(!in_array($a, $APPLICATION->active_modules)){
$a = 'default';
}

$folder = basename(getcwd());

if ($folder == 'panel'): $folder = '/panel';
else: $folder = '';
endif;

if ($folder == '') :

$modules_path = $_SETTINGS ['doc_dir'] . '/modules/';

else :

$modules_path = $_SETTINGS ['doc_dir'] . $folder.'/modules/';

endif;

$controller = $modules_path . $a . "/controller.php";

if (is_file($controller)) :

include "$controller";

else :

include $modules_path . "default/controller.php";

endif;

if (isset($_CONTROLLER['view'])): $APPLICATION->view_name = $_CONTROLLER['view'];
endif;


А теперь давайте разберёмся что же значит весь этот код.


/**

В этой строчке мы проверяем переданный параметр $_GET['a'] ($a) на то

является ли он названием установленного модуля. Если нет, то переходим на подключение

модуля поумолчанию

*/

if(!in_array($a, $APPLICATION->active_modules)){
$a = 'default';
}

Следующий интересный момент это выбор папки из которой мы будем подключать модули.


if ($folder == '') :

$modules_path = $_SETTINGS ['doc_dir'] . '/modules/';

else :

$modules_path = $_SETTINGS ['doc_dir'] . $folder.'/modules/';

endif;

У каждого нашего модуля будет 2 части. Одна та, которую видит пользователь, а вторая та которая находится в нашей админ панели и через которую администратор сайта управляет информацией модуля. В зависимости от текущей папки происходит подключение соответствующего контроллера.


$controller = $modules_path . $a . "/controller.php";

if (is_file($controller)) :

include "$controller";

else :

include $modules_path . "default/controller.php";

endif;

В каждом контроллере содержится своя информация о моделях и вьюшках (файлах которые выводятся в браузер).

Достаточно много информации приведено в интернете о типе построения приложений MVC. Но я всё таки напишу в кратце что это такое и как это работает.

Для начала о моделях.

В моём случае это часть модуля которая содержит всю логику определённого действия. Например нам нужно вывести список новостей. Запрос на вывод новостей и постраничное разбиение, выполняется в модели. При этом в модели ничего не выводится на экран. Результаты выборки данных из базы передаются в файл отображения. Такое разделение очень удобно с точки зрения читаемости кода и модификации.

О вьюшках  (Views).

В этой части модуля (файлах) происходит приём данных из соответствующей модели модуля. Далее через цикли или у кого как выводится содержимое.

И наконец про Controller’s (Контроллеры).

Контроллеры выполняют связующую функцию между моделью (логикой) и отображением (вьюшкой). Ядро обширное поэтому я решил разбить его на такие подпункты.

Продолжение следует…

Достаточно часто приходится искать компании для покупки доменов. Так чтобы потом не возникало проблем, я покупаю домены у ukraine.com.ua.

Наткнулся на интересный и познавательный сервис naprimete.ru. Есть всё что хочешь. Музеи, библиотеки, театры и многое другое.

Добавить комментарий