Ответов: 0 Просмотров: 2392
|
Инструментов качественной автоматизации существует относительно немного и в основном для таких зарекомендовавших себя ветеранов, как Codelgniter http://codeigniter[dot]com/ , Prado http://www[dot]pradosoft[dot]com/ , CakePHP http://cakephp[dot]org/ .
Недели 2 назад наткнулся на такую интересную штуку — Backvendor, написанном для Yii Framework.
Собственно, что же в нем интересного?
Основной задачей дополнения Backvendor является максимальная автоматизация начальной стадии проекта и освобождение разработчика от рутины при создании веб-сервиса. С помощью Backvendor и пары команд в консоли можно создать каркас для приложения, содержащее веб-сервис и админпанель; быстро настроить CRUD для каждой модели, указать связи между ними. Все это делается гораздо быстрей, чем при использовании стандартных средств Yii. Кто не верит - проверяйте, можем потом сравнить результат.
Детальную информацию по этому поводу можно посмотреть как на самом сайте Yii framework (http://www[dot]yiiframework[dot]com/exte[dot][dot][dot]sion/Backvendor/ ) так и на домашней страничке проекта (http://mobidev[dot]biz/Backvendor[dot]html ).
Для себя лично я выделил ряд особенностей Backvendor, которые на мой взгляд будут полезны всем.
Возможности Backvendor
1) Ускорение процесса разработки. Достаточно прописать одну консольную команду, чтобы создать скелет будущего приложения.
2) Дополнение полностью объектно-ориентированное.
3) Кодирование CRUD для back-end сводится к генерации моделей active record и описыванию параметров в конфиге.
4) Валидация форм.
5) Автоматическое создание веб-сервиса поддерживающее JSON API.
6) Функция автодокументирования кода.
7) Поддержка API версионирования.
8) Возможность создания функциональных тестов для разработки приложения в стиле TDD, что позволяет еще больше укоротить цикл.
9) Развертывание кода на сервере используя Phing
Создание веб-сервиса
Покопавшись немного с документацией - написал небольшой пошаговый урок как это работает.Ниже привожу с комментариями создание базового веб-сервиса с админкой и фрагменты кода.
Для всх желающих, загрузить код демо-приложения можно с https://github[dot]com/mobidevpublis[dot][dot][dot]/Backvendor-demo .
Шаг 1.
Скачиваем само раcширение Backvendor с https://github[dot]com/mobidevpublisher/Backvendor и кладем его в папку с веб доступом (я не менял ее название с Backvendor). После этого в командной строке пишем:
Легким движением руки мы получаем новый проект, который находится в папке my-demo-project. Он уже содержит структуру приложения, базовые классы и требует от вас только необходимых настроек. Проект состоит из таких частей:
1. applications — тут лежат 2 приложения — админпанель и веб-сервис а также папка images для хранения общих картинок;
2. core — общий код для всех приложений;
3. framework — собственно сам Yii Framework.
Шаг 2.
Перед началом работы нужно применить миграции к базе данных (естественно БД нужно создать заранее и настроить доступ к ней в core/config/db.php). Это делается командами в консоли:
Шаг 3.
Займёмся настройкой админпанели (моделями и расстановкой связей между ними).
В новом проекте вам нужно будет генерировать модели для необходимых таблиц при помощи Gii Tool. Его настройки находятся в файле /core/config/main.php. При генерации моделей выставляем путь для них «core.models»
Основные настройки для CRUD и моделей находятся в файле backend/protected/controllers/Si teController.php в функции reconfigureEntityParamsDictionar y. Для данного демо-проекта эта функция выглядит так:
CODE ( htmlphp):
скопировать код в буфер обмена
self::$entityConfigDictionary = CMap::mergeArray( parent ::$entityConfigDictionary, array( 'modelName' => 'User', 'excludeFromGridView' => array( 'password', 'salt', ), 'excludeFromDetailView' => array( 'password', 'salt', ), 'modelAlias' => 'Blog User', 'modelAliasPlural' => 'Blog Users', 'bool' => array('admin'), 'datetime' => array('creation_date'), 'images' => array('image'), 'title' => 'username', 'fb_link' => 'http://www.facebook.com/profile.php?id={value}' ), 'password' => array('password'), 1 => 'Publisher', 2 => 'Moderator', 3 => 'Writer', ), ), 'maxUploadedImageSize' => array('width' => 200, 'height' => 200), 'selectable' => 2, 'nuke'=>true ), 'modelName' => 'Post', 'notUseTitleOfRelation' => array('author'), ), 'modelName' => 'PostCategory', 'linksManyToManyRelation' => array('post', 'category') ), 'modelName' => 'Category', 'modelAliasPlural' => 'Categories', ), )); }
Вот и Все.
Каждый ключ в этом массиве (User, Post и т. д.) - название сущности. Описание настроек есть в документации по расширению — http://mobidev[dot]biz/Backvendor_cr[dot][dot][dot]ate_backend[dot]html
Правильно сконфигурировав сущности вам не придётся создавать вручную CRUD для них, также не придётся и редактировать модели. Всю работу на себя берет массив с настройками.
Что касается веб-сервиса — как вы наверное догадались он лежит в папке apllication/webservice. Основная логика находится в ApiController.php, здесь надо указать Api методы, которые будут вызываться клиентом.
В качестве формата общения между сервером и клиентом используется JSON.
Backvendor предполагает использование следующей архитектуры для веб-сервиса:
1) каждый запрос валидируется отдельной моделью в которой прописываются правила валидации для каждого параметра в запросе;
2) вся логика находится в соответствующих компонентах, контроллер отвечает только за выдачу ответа клиенту.
На мой взгляд, очень хорошее и продуманное архитектурное решение. Также вы можете сделать версионирование вашего API, как это сделать также написано в документации.
Выводы:
Работает
Куча ссылок (учим буржуйский, на русском пока нет):
1) Детальная информация о проекте доступна на http://mobidev[dot]biz/Backvendor[dot]html
2) Что и где скачать
Backvendor доступен для скачивания на github -[url]https://github[dot]com/mobidevpublisher/Backvendor [/url]
Демо версия проекта https://github[dot]com/mobidevpublis[dot][dot][dot]/Backvendor-demo |