У меня достаточно разумный опыт работы с PHP (около 5 лет опыта работы с некоторыми веб-сайтами и двумя браузерными играми). Это первый раз, когда я действительно запутался с ядром ядра, а не просто разработал плагин или модуль для чего-то вроде Joomla. У меня большой опыт работы с другими объектно-ориентированными языками (например, Java).
Мой вопрос заключается в том, что я создаю сайт, очень похожий на обычный сайт, но я хочу, чтобы он был более гибким, и я не уверен, что «делаю все правильно». В некотором смысле, я чувствую, что создаю половину CMS.
Например, у меня есть главная страница, настроенная через контроллер, который контролирует, какие представления отображаются в данный момент. Страница основного вида выглядит так:
<?php $this->load->view("headerview"); ?>
<?php $this->load->view($contentview); ?>
<?php $this->load->view("footerview"); ?>
в самом файле представления (чтобы я мог динамически загружать представление содержимого, остальные не меняются). Это мой первый вопрос, так как я выполняю ВСЕ элементы управления через основной контрольный файл, это правильно?
Моя индексная функция устанавливает mainview как представление, которое будет загружено с переменными для «contentview» и «gameview». Когда «contentview» является игрой, она имеет разделенную панель, одна из которых отображает статистику игроков и тому подобное, а другая отображает любую страницу, на которой находится игрок (торговый магазин, битва, исследование мира и т. Д.). То, что здесь показано, - это переменная «gamecontent» (также передается в «главный» контроллер).
<?php $this->load->view("menubar"); ?>
<?php $this->load->view($gamecontent); ?>
Короче говоря, вся обработка представлений в настоящее время выполняется в главном контроллере, то есть в одном контроллере.
$data['title'] = "Experimental Page";
$data['maincontent'] = "gameview";
if($page == 1) {
$data['gamecontent'] = "townview";
} else if ($page == 2) {
$data['gamecontent'] = "merchantview";
} else if ($page == 3) {
$data['gamecontent'] = "explorationview";
} else if ($page == 4) {
$data['gamecontent'] = "hospitalview";
} else if ($page == 5) {
$data['gamecontent'] = "fightview";
} else if ($page == 6) {
$data['gamecontent'] = "adminview";
}
$this->load->helper(array('form','url'));
$this->load->library('form_validation');
$this->load->view('mainview', $data);
Я еще не начал добавлять функции боя и шоппинга, но вижу, что этот контроллер становится очень большим, очень быстрым. Мне кажется, что это неправильно, но почему-то я не могу сформулировать, как правильно организовать настройку ядра.
Моя цель (надеюсь) разделить контроллеры так, чтобы каждый из них обрабатывал отдельную игровую функцию, такую как лечение, бой, исследование и так далее, и был отделен так же, как мои модели (пользователь, мобы, предметы и т. Д.) .).
Может кто-нибудь помочь мне разобраться, как правильно организовать этот проект?