Создание управляемых объектов на сайте
Пока я работал над своей системой управления сайтом (8cms), я долго думал как упростить процесс быстрого создания и редактирования управляемых объектов. Да и вообще, как упростить создание сайтов?
Вроде бы все уже давно придумано, но в конечном итоге все cms лишь красивый каркас, который надо наполнить контентом. Поэтому свою цмс я уже строил с полным пониманием, что она должна упрощать мне разработку любого сайта.
Вот некоторые выводы:
Любая структура, будь то разделы на форуме, или каталог фото-галерей связанных с городами, описывается в таблице базы данных. Все программисты давно уже выявили для себя кодекс написания таблиц. Как называть определенные поля и прочее. У меня, например, каждая таблица имеет _id, и _parent. Часто добавляю _disable или _disabled, не суть важно. Главное то, что в конечном итоге есть определенная структура - полностью описывающая свою нумерацию, и номер родителя (как подраздел указывает на раздел, которому он принадлежит). И что самое главное - это позволяет обобщить любые данные, а соответственно и упростить этапы разработки.
Моим первым шагом было решение придумать структуру обобщающую любые объекты. Структура сводилась к названию поля, названию для отображения, типу поля и дополнительным флагам, отвечающим за возможность редактирования и так далее.
Вторым шагом - было построение методов, которые брали эту структуру (Про себя я назвал ее Объекты, ведь описание таблицы помогает для управления чего? Именно объектов. Постов, комментариев, разделов. Не путать с ООП.), и строили таблицы для просмотра объектов, формы добавления, удаления и редактирования.
Таким образом появилась универсальная связка действий. Создание таблицы, создания описания объекта (из этой таблицы), что полностью давало возможность сразу же управлять всеми данными. Конечно внутри методов были проделаны большие работы для управления разными типами данных. И работа с датами, и с элементом select, который автоматически мог заполняться по другой таблице, и загрузка файлов, мульти-файлов.
Проблема с управлением данными решена - но она настолько обобщена, что позволяло делать быстро сложные структуры, но вот пользовательский интерфейс по работе с этими данными был несколько унифицирован, что упрощало управление данными, и, в тот же момент, усложняло возможность влезть в нужный момент и исправить что-то (думаю, многие согласятся что этот минус полностью покрывается большущим плюсом всей подобной структуры).
Такой подход позволяет разработчику быстро делать все что необходимо.
Следующий этап в развитии такой структуры мне пока не ясен. Есть мысль создать связи между объектами, что позволит в виде дерева данных быстро получать доступ к нужным объектам. Возможно, реализация подобного момента и станет следующим шагом в развитии 8 cms.
Получилась довольно длинная и сложная для понимания запись, но начинающим разработчикам некоторые моменты будут очень интересны.
Дата записи: 13.01.2010 16:21