ОО Проектирование CMS
Вложил в "Миниатюры" UML-диаграму.
Ну и сам проект: "изобретения колеса"
Я представляю(и могу), это все написать на структурно-функциональном.
Но ключевое здесь: : Практика и первый шаг на встречу ООП ...
Естественно хочу попробовать объектно-ориентированный подход к разработке.
Страница будет такая, Вложил в "Миниатюру" 2.
( Сверестаное html-представления есть, блоки разбиты на таблицы, не фреймы)
ЧПУ будет вида ?cat=1&page=1 ... (Ну вообще приблизительно так)
контент-менеджер, для зарегистрированных пользователей будет приблизительно таким: Вложил в "Миниатюру" 3
Админ панель(а там будет управления Меню-Навигация, Управления Пользователями и Статьями), например уголок для статьи будет таким: как на "Миниатюре" 4
(ну конечно же в реальности там будет чуть больше полей, и расширенно!)
Только вот в голове куча мыслей ... (Никак собрать не получается)
Как это организовать(на ООП,) от чего мне оттолкнуться ? :confused:
(В частности интересует модель MVC, возможно зенд фраймворк)
Подскажите хотя бы сам принцип как это все должно работать на ООП ? :rolleyes:
(как спроектировать правильно систему в целом, разбить на классы, отделить логику от view и т.к)
По поводу проектирования БД - это подсказывать не нужно! (это я сделаю сам smile )
Конечно же при разработке программы я могу решать возникающие проблемы самостоятельно,
основываясь на собственном опыте, используя свой интеллект, удачу, потребляя
большое количество минеральной воды и любых других напитков. :p
Но для этого простого колеса, хотелось бы использовать уже некоторые готовые решения(подшипники,гайки и т.к.), посоветуйте какие ? (только не полностью готовая cms подобного вида, а для этого колеса подрядные элементы).
Если у вас есть свободное время поделиться опытом, натолкнуть на мыслю, пнуть носом. Буду весьма признателен! ;)
Код:
class AbstractController extends (Если это зенд, то Zend_Controller_Action... кажись)))
{
protected $_db;
protected $_view;
// и т.д., выделяешь тут всё то, что тебе нужно будет для работы
}
//Это мы будем использовать для добавления/удаления/редактирования
class ControllController extends AbstractController
{
public function saveAction()
public function deleteAction()
}
//Будет отвечать за отдачу контента списком или просмотр одного объекта
class ListController extends ControllController
{
public function listAction();
public function viewAction();
}
{
protected $_db;
protected $_view;
// и т.д., выделяешь тут всё то, что тебе нужно будет для работы
}
//Это мы будем использовать для добавления/удаления/редактирования
class ControllController extends AbstractController
{
public function saveAction()
public function deleteAction()
}
//Будет отвечать за отдачу контента списком или просмотр одного объекта
class ListController extends ControllController
{
public function listAction();
public function viewAction();
}
Вот так мы получаем модель, в которую нужно подставить необходимые данные для управления моделью. Ровно так сделано у меня. В конце приведу пример конкретной реализации конечного класса (скажем новости)
Код:
class NewsController extends ListController
{
protected $_modelName = 'News';
protected $_pageSize = 20;
}
{
protected $_modelName = 'News';
protected $_pageSize = 20;
}
Т.е. я просто указываю имя модели (таблица в БД) и размер странички (для постраничного вывода.
А вот, у меня первые шаги :rolleyes:
Я например выделил сущности:
* Пользователь (User)
* Администратор (Admin)
* Система (Aplication)
* Вход В Систему (Access)
* Статьи (Articles)
* Меню (Menu)
(я так понял эти сущности в отдельные классы реализовать)
по поводу паттерна MVC (я пока что сложновато представляю это на практике)
Но есть вопросы(по частям):
Model(Модель) - я так понял надо по сути сделать все классы которые будут описывать таблицы в БД. (например класс для User) . или не правильный подход ?
View(Представление) - теория гласит: Это классы которые отвечают за формирования ответов(представления) браузеру.
Вот тут то я на практике не представляю это дельце:confused:
Controller(Контроллер) - так понял это Класс который по сути будет говорить как и что делать в зависимости от пришедших в него параметров.
Стоит ли делать отдельный объект(класс) для работы СУБД MySQL ?
---
Хотел бы копнуть в сторону ZF, да как то не по себе становиться :D (страх что ли)
Крайне интересная тема. Тоже пытаюсь разобраться во всем этом.
Если изучишь ZF, то многие вопросы отпадут.
Ладно, и на том спасибо! Буду курить:)