Всем доброго времен суток. Продолжаем собирать ядро движка RS-MINI на котором в итоге мы соберем небольшой интернет-магазин. По плану у нас создания класса который будет олицетворять контроллеры в нашей CMS.
Как и в предыдущем посте, сегодняшний класс будет всего-лишь наброском, так как основной функционал сейчас реализовывать еще рано.
Что из себя представляет контроллер? В данной интерпретации класс будет нести информацию о том
Имя контроллера и есть путь до него. Например если контроллер будет называется pub.test.intro, это значит, что класс лежит вот по этому пути:
/project/modules/pub/test/controller/intro.class.php
Почему именно в папке project/modules/? Потому что автозагрузчик классов не найдет файл …/pub/test/controller/intro.class.php в других папках.
ID в системе — это всего лишь уникальный ключ в базе данных.
Параметры буду хранится в базе данных в виде строки, а в объекте будут существовать в виде массив. Эти параметры позволят влиять на работу контроллера (например менять кол-во статей выводимых на странице)
Под правилом подключения я имею ввиду возможность наследовать контроллеры от родительской странице к дочерним. Например нам будет достаточно подключить (на страницу /admin/) контроллер регулирующий доступ пользователя к админке, и отметить его как наследуемый, тем самым этот контроллер будет действовать на всех страницах вложенных в страницу /admin/.
Так же в связи с тем что контроллеры умеют наследоваться, нам, в классе, понадобится отдельный флаг по определению, унаследован ли контроллер.
Сражу скажу, не страшно, если этот теоретический материал не понятен. Это моя идея и ее сложно объяснить в словах. Когда мы перейдем к использованию этого класса, придет понимание всего того что я тут на калякал.
Давайте я опубликую набросок класса. (файл называется controller.class.php и лежит в папке /rs-mini/core/)
<?php
/*
* @package RS-MINI
* @copyright (c) 2015 Alexey Glumov aka Rio-Shaman (support@rio-shaman.ru)
* @license GNU General Public License version 2; see LICENSE.txt
*
*/
namespace core;
if(!defined('RS-MINI')) die();
/*
* controller v 1.0
*
* Класс хранит инфу о контроллере
*
*/
class controller
{
/*
* свойство id контроллера
*
* @var - integer
* @access - public
*/
public $controllerID;
/*
* свойство имя контроллера
*
* @var - string
* @access - public
*/
public $controllerName;
/*
* свойство параметров контроллера (строчка)
*
* @var - string
* @access - private
*/
private $controllerParam;
/*
* свойство параметров контроллера (массив)
*
* @var - array
* @access - private
*/
private $paramList = array();
/*
* свойство наследования контроллера
*
* @var - boolean
* @access - public
*/
public $controllerInherit;
/*
* свойство определяет унаследовался ли контроллер
*
* @var - boolean
* @access - public
*/
public $inheritFlag = FALSE;
/*
* контсруктор. получаем объекты переданные по ссылке
*
* @access - public
*
* @param array connect - массив с полями подключения. в часности важны ключи
* ['controller_id']
* ['controller_name']
* ['connect_value']
* ['connect_inherit']
*/
public function __construct(&$connect)
{
}
}
В общем-то текста мало, да и толку от него тоже не много, но без этих строк будет очень трудно в будущем. Если у Вас возникают какие-то вопросы, то пишите их в комментариях, я обязательно попытаюсь на них ответить.
Результат сегодняшний работы Вы можете скачать в конце статьи.
Всего Вам наилучшего, у меня на сегодня все!