Как в разы упростить разработку модулей для %some% CMS
Думаю разработчикам модулей для различных цмсок немного надоедает постоянная рутина.
Всегда одно и тоже: создание объекта, изменение объекта, удаление объекта, просмотр объекта.
С небольшими изменениями всегда можно переделать один модуль в другой. Например модуль новостей в модуль билиотеки или наобророт.
Порой даже будет достаточно изменить названия для объектов.
Так почему бы не сделать что нибудь вроде генератора модулей?
Попробуйте только представить себе сколько сразу времени может освободиться.
Идея не нова, была попытка создать универсальную цмс, с помощью которой из админки можно напрограммировать мышкой себе модуль.
(например http://boolive.ru/)
Нет, я не предлагаю делать универсал, это требует очень много времени, знаний, ресурсов и прочего.
Можно попробовать сделать что то вроде кодогенератора или фреймворка, не знаю как это лучше будет назвать.
Для начала поговорим немного об объектах.
Пусть объект представляет собой множество объектов и тем временем сам может входить в какое нибудь множество объектов
Объкты выстроены в иерархические цепи.
Над объектами можно совершать два действия чтение и запись. На основе этих действий будут строится другие действия.
Уровни абстракции объектов.
-Каждый уровень представляет собой группу объектов одного типа
-На каждом уровне ничего не известно о существованиях других уровней и их свойствах.
Связями будет заниматься компоновщик объектов.
-Каждый уровень может предоставлять интерфейс для работы со свойствами объектов.
Что это дает? Это позволяет сделать модуль очень гибким, изменения в компонеты будут вноситься один раз.
Например у нас есть модуль библиотеки, есть категории и статьи, у статей два свойства Заголовок и текст.
Понадобилось добавить еще одно свойство. И вывести его везде где встречаются статьи. Если система маленькая, то особых сложностей это не вызовет,
Но чем больше система, тем больше вероятность допустить ошибку, плюс ко всему это достаточно рутинная работа.
А если вдруг понадобится изменить или удалить это свойство?
Это снова придется пройтись во всем точкам где оно всречается.
Уже есть пара набросков как это будет выглядеть, но нужно их доработать.
В ближайшие дни надеюсь поделиться. А пока можно будет обсудить все это дело, может быть у кого то тоже есть какие нибудь идеи.