Контроллеры в RS-MINI

 

Всем доброго времен суток. Продолжаем собирать ядро движка RS-MINI на котором в итоге мы соберем небольшой интернет-магазин. По плану у нас создания класса который будет олицетворять контроллеры в нашей CMS.

Как и в предыдущем посте, сегодняшний класс будет всего-лишь наброском, так как основной функционал сейчас реализовывать еще рано.

Что из себя представляет контроллер? В данной интерпретации класс будет нести информацию о том

  • где находится класс контроллера (имя контроллера)
  • его ID в системе
  • параметры которые необходимо будет передать в объект контроллера
  • ну и наконец правило подключения контроллера

Имя контроллера и есть путь до него. Например если контроллер будет называется 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

Давайте я опубликую набросок класса. (файл называется 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)
    {
        
    }
}

Заключение

В общем-то текста мало, да и толку от него тоже не много, но без этих строк будет очень трудно в будущем. Если у Вас возникают какие-то вопросы, то пишите их в комментариях, я обязательно попытаюсь на них ответить.

Результат сегодняшний работы Вы можете скачать в конце статьи.

Всего Вам наилучшего, у меня на сегодня все!

Прикрепленные файлы

 

Возможно Вам будут интересны следующие заметки

Комментарии (0)

Ваше имя *
Сайт
Ваш E-mail *
Ваше сообщение *
 
Вы не подтвердили условия политики конфиденциальности.
К данной статье пока нет комментариев.