Итак у нас уже есть основа для нашей системы. Но ядро пока что пустовато. Оно умеет пока что только соединяться с базой данных. В этой статье мы продолжим собирать наше ядро, и прикручивать такие возможности как инициализация модулей и их создание. Так как наша система 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. Есть всё что хочешь. Музеи, библиотеки, театры и многое другое.