У меня похожая идея, этим занимается модель. Только модель описывается в коде, не так удобно конечно, зато такой способ более гибкий. В конце топика краткое описание.
Посмотрите, как сделан Django, а именно в джанго-книге описано взаимодействие модели и базы, а в следующей главе — интеграция с админкой. Учтите, только, что примеры в книге используют версию 0.96 — а сейчас уже beta вышла.
Какого именно кода? 8)
Если речь просто о структуре классов по Class Diagram, то такое уже есть. См. например Sparx Enterprise Architect. А вот если что-то более сложное, да с поведенческими диаграммами…
Несколько лет назад сталкивался с готовой подобной штукой — Codecharge. Для меня в этом подходе оказалось не достаточно гибкости. Но возможно вас устроит.
И вправду мощная штука. И интересная. Поизучаю.
Но не то, что я делаю. У меня фишка в том, что есть база и код. Мета-информация вся в базе. И, соответственно, меняется если что очень гибко.
Пример: у нас есть работающее веб-приложение и тут возникает необходимость добавить три колонки в разные таблицы. И отчёт. В случае Codecharge`а нужно открыть проект, внести изменения, перегенерить код и выложить его. И не забыть в базу тоже изменения внести. В случае моего проекта нужно либо просто пойти и внести изменения прямо в веб-интерфейсе, либо через round-trip и диаграммы… Но до этого пока далеко. 8)
Я и мой друг, разработали что то подобное, конечно не так круто, как тут описано, но ему хватает. Я просто Java разработчик, а он PHP. Вот и пришлось мне столкнуться с PHP. Мне не очень хотелось мучаться с этим языком. Вот что у нас получилось.
Редактируем объектную модель с помощью Power Designer. По объектной модели генерируется физическая модель. Потом, с помощью XSLT преобразования, превращает полученную физическую модель в необходимый для Propel файл. А пропел генерит все необходимые файлы для работы с данными. Далее вступает в работу генерилка админки, которой говоришь, как показывать некоторые лукапы.
Итог: описание модели и создание админки — 30 минут — 2 часа. Ну соответственно остаётся натянуть дизайн.
Как то так. Данное нововведение позволило моему другу сэкономить ну очень много времени и заниматься деййствительно интересными вещами, а не копипастом.
И еще… Сразу всё автоматизировать не получиться. Будьте готовы к тому, что придётся попутно развивать и «вашу автоматику».
Ага! Вот идея с Propel`ом как-то от меня ранее ускользнула. Погляжу, похоже, он окажется полезен. Спасибо.
А в остальном подход похож, да. Ну, за исключением того, что моя генерилка админки работает в рантайме и настраивается (точнее, будет настраиваться) через базу. Это добавляет гибкости…
Впрочем, про генерацию и кэширование кода я тоже подумываю. Но это потом, потом…
В rails есть только один минус, который сейчас останавливает большинство от попыток «попробовать»: хостинг с поддержкой PHP найти гораздо легче, чем хостинг с вменяемой поддержкой Rails по той же цене
Делать базу и темплейт. Не думать о формах, обработке, валидации и отображении. CM(S|F)?