Генерация кода. 2-й уровень

Это уже вторая моя статья на тему генераторов кода. В прошлой статье я приводил аргументы в пользу генерации, а так же провел небольшой обзор инструмента CodeForge. Так как эта утилита стала очень большим подспорьем в моей работе, я решил внести несколько улучшений в ее работу.

Изменений было сделано довольно много, но из фундаментальных можно выделить следующие:

  • Проекты (или, если удобнее, workspace). Появилась возможность создавать проекты, которые объединяют несколько сущностей (моделей) в рамках одного приложения. Т.е. если в прошлой версии нужно было указывать входные файлы при компиляции, то в теперешней версии достаточно просто добавить их в один проект и работать с ними как с группой.
  • Сборка. Позволяет для каждой сущности по некоторому шаблону сгенерировать часть файла, а после собрать из частей один. Это полезно, если нужно в одном месте провести обработку всех сущностей. Как пример — генерация меню. После сборки можно сделать релиз и получить готовое приложение.
  • Расширение интерфейса. Это изменение стало следствием предыдущих. Так как функционал расширился, появились дополнительные команды: для инициализации проекта, компиляции, сборки и прочего.
  • Хелперы так же претерпели серьезных изменений. Если раньше это были просто PHP функции, то теперь они могут быть переопределены во вложенных схемах или расширениях.

Как я писал выше, теперь с помощью CodeForge можно создать готовое приложение. В состав утилиты включен шаблон приложения на Yii, а так же схемы для генерации моделей, вида и контроллера CRUD операций (заметьте, что сам фреймворк в шаблон не входит и его нужно установить отдельно). Как всегда, код можно взять с github, там же есть небольшой пример создания приложения.