Духовность™
Продвинутый новичок
Покритикуйте реализацию решения
В попытках написать что-то в стиле "MVC ради MVC", что с грохотом провалилось, придумал некую архитектурную композицию, которая, как мне кажется, должа быть представленна типовым решением (Фаулера читаю, но пока что только до II главы дошел, ещё ничего не переварил как следует).
Разберем на примере сценария листинга статей, "из которого" могут идти запросы на
- поднятие позиции статьи
- опускание позиции статьи
- установка темы дня
- установка темы рубрики
ВСЯ логика, обеспечивающая эти 4 действия, сосредоточена в конкретных методах класса articlesListController, в которых, в случае необходимости, могут вызываться методы самой модели "статья" для тех или иных изменений в статье.
На самой странице сервера (определение по Фаулеру) логики нет. Абстрактно это выглядит так:
полная версия: http://phpclub.ru/paste/index.php?show=2182
В самом скрипте articles.list.php это вызывается примерно так:
Это всё. Меня интересует, насколько данный подход оправдан и что я вообще такое сделал?
В попытках написать что-то в стиле "MVC ради MVC", что с грохотом провалилось, придумал некую архитектурную композицию, которая, как мне кажется, должа быть представленна типовым решением (Фаулера читаю, но пока что только до II главы дошел, ещё ничего не переварил как следует).
Разберем на примере сценария листинга статей, "из которого" могут идти запросы на
- поднятие позиции статьи
- опускание позиции статьи
- установка темы дня
- установка темы рубрики
ВСЯ логика, обеспечивающая эти 4 действия, сосредоточена в конкретных методах класса articlesListController, в которых, в случае необходимости, могут вызываться методы самой модели "статья" для тех или иных изменений в статье.
На самой странице сервера (определение по Фаулеру) логики нет. Абстрактно это выглядит так:
PHP:
class articlesListController
{
// Поднять статью "выше"
public function processMotionUp()
{
// логика
// используем модель статья
$this->article->motionUp(...);
}
// Опустить статью "ниже"
public function processMotionDown()
{
// логика
// используем модель статья
$this->article->motionDown(...);
}
// Установить тему дня
public function processSetTheme()
{
// логика
}
// Установить тему рубрики
public function processSetRubric()
{
// логика
}
}
В самом скрипте articles.list.php это вызывается примерно так:
PHP:
//...
$articleController = new articlesListController();
if ($articleController->processMotionUp())
{
redirect('Статья поднята на позицию выше.');
}
else if ($articleController->processMotionDown())
{
redirect('Статья опущена на позицию выше.');
}
else if ($articleController->processSetTheme())
{
redirect('Тема дня установлена.');
}
else if ($articleController->processSetRubric())
{
redirect('Тема рубрики установлена.');
}
