Пакетный генератор классов моделей

Уже исправленные репорты или принятые предложения
Ответить
Аватара пользователя
Stepan Selyuk
Сообщения: 198
Зарегистрирован: 2010.02.03, 05:51
Откуда: Cyprus, Limassol
Контактная информация:

Пакетный генератор классов моделей

Сообщение Stepan Selyuk »

Hi folks!

Для своих проектов обычно использую пакетный генератор классов моделей для всех таблиц в БД. Переделал его под Yii2 на скорую руку. Скачать можно тут https://www.dropbox.com/s/tzhayobekm1o1 ... WithDB.zip

Его НЕОБХОДИМО модифицировать под себя. Предполагается что консольный контроллер расположен в \app\commands\developer - иначе нужно менять неймспейсы. Также в шаблон класса модели я добавил генерацию метода relations() как в Yii 1.x, чтобы знать какие именно связи имеет модель (список связей), возвращает массив формата ['relationName'=>'relationType'], где relationType HAS_ONE или HAS_MANY.

Также можно указать свои имена классов для таблиц, чтобы получить то, что нужно. При генерации модели складываются в каталог \app\models\_generated. Я его использую в основном либо при добавлении новой таблицы (генерация модели одним кликом), либо когда в БД что-то меняю, удаляю/добавляю поля, этот генератор позволяет быстро создать код, с которого уже можно копипастить изменившиеся значения вроде магических комментов полей моделей и т.д.
Сначала невидимое, затем видимое. И так у всех программистов :)
Аватара пользователя
Stepan Selyuk
Сообщения: 198
Зарегистрирован: 2010.02.03, 05:51
Откуда: Cyprus, Limassol
Контактная информация:

Re: Пакетный генератор классов моделей

Сообщение Stepan Selyuk »

Да и сам Gii я немного рефакторил бы, некоторые вещи вынес бы в изменяемые методы, вроде какой CodeFile использовать, или метод для генерации i18n строки. Не у всех же Yii:t(). Я например использую __('message',...) вообще без категорий. Так как они генерируются автоматически по относительному пути к файлу, и используются в БД в качестве индекса для поиска сообщения (и подгрузки сразу всех сообщений категории), наряду с хешем сообщения. Поэтому и пришлось целиком вырывать методы с Gii, чтобы изменить пару копеек. Я к тому, что Gii получается модуль сам в себе, без особой возможности наследования и расширения.
Сначала невидимое, затем видимое. И так у всех программистов :)
lancedevnull
Сообщения: 1268
Зарегистрирован: 2013.07.17, 17:37

Re: Пакетный генератор классов моделей

Сообщение lancedevnull »

можно указать свои шаблоны и генераторы
Аватара пользователя
Stepan Selyuk
Сообщения: 198
Зарегистрирован: 2010.02.03, 05:51
Откуда: Cyprus, Limassol
Контактная информация:

Re: Пакетный генератор классов моделей

Сообщение Stepan Selyuk »

Разумеется можно. Но как без костылей использовать технологии Gii из консольного контроллера например? Если даже при генерации файлов (при создании файлов и каталогов) проверяются переменные непосредственно установленные в классе модуля и разумеется мой консольный контроллер вообще ничего не знает о модуле Gii, а лишь запускает наследованный генератор от Gii-генератора моделей... А если бы была еще пара методов в генераторе вроде getPermissionsMaskForFiles() и getPermissionsMaskForDirs(), то я бы просто их заменил в наследнике.
Сначала невидимое, затем видимое. И так у всех программистов :)
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Пакетный генератор классов моделей

Сообщение samdark »

Консоль для Gii планируется из коробки.
Ответить