PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Как за 10 минут сделать почти всю грязную работу
Masterplan
Отправлено: 05 Октября, 2012 - 11:16:32
Post Id



Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)




Инструментов качественной автоматизации существует относительно немного и в основном для таких зарекомендовавших себя ветеранов, как 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). После этого в командной строке пишем:

CODE (htmlphp):
скопировать код в буфер обмена
  1. cd /path/to/webroot/Backvendor
  2. php bviic.php createmultiapp --path=»/path/to/webroot/my-demo-project»


Легким движением руки мы получаем новый проект, который находится в папке my-demo-project. Он уже содержит структуру приложения, базовые классы и требует от вас только необходимых настроек. Проект состоит из таких частей:
1. applications — тут лежат 2 приложения — админпанель и веб-сервис а также папка images для хранения общих картинок;
2. core — общий код для всех приложений;
3. framework — собственно сам Yii Framework.

Шаг 2.

Перед началом работы нужно применить миграции к базе данных (естественно БД нужно создать заранее и настроить доступ к ней в core/config/db.php). Это делается командами в консоли:

CODE (htmlphp):
скопировать код в буфер обмена
  1. cd /var/www/my-demo-project/applications/backend/protected php yiic migrate


Шаг 3.

Займёмся настройкой админпанели (моделями и расстановкой связей между ними).
В новом проекте вам нужно будет генерировать модели для необходимых таблиц при помощи Gii Tool. Его настройки находятся в файле /core/config/main.php. При генерации моделей выставляем путь для них «core.models»

Основные настройки для CRUD и моделей находятся в файле backend/protected/controllers/Si teController.php в функции reconfigureEntityParamsDictionar y. Для данного демо-проекта эта функция выглядит так:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.  self::$entityConfigDictionary = CMap::mergeArray(
  3.        parent::$entityConfigDictionary, array(
  4.            'user' => array(
  5.                 'modelName' => 'User',
  6.                 'excludeFromGridView' => array(
  7.                     'password', 'salt',
  8.                 ),
  9.                 'excludeFromDetailView' => array(
  10.                     'password', 'salt',
  11.                 ),
  12.                 'modelAlias' => 'Blog User',
  13.                 'modelAliasPlural' => 'Blog Users',
  14.                 'bool' => array('admin'),
  15.                 'datetime' => array('creation_date'),
  16.                 'images' => array('image'),
  17.                 'title' => 'username',
  18.                 'link' => array(
  19.                     'fb_link' => 'http://www.facebook.com/profile.php?id={value}'
  20.                 ),
  21.                 'password' => array('password'),
  22.                 'dropDown' => array(
  23.                     'role' => array(
  24.                         1 => 'Publisher',
  25.                         2 => 'Moderator',
  26.                         3 => 'Writer',
  27.                     ),
  28.                 ),
  29.                 'maxUploadedImageSize' =>
  30.                     array('width' => 200, 'height' => 200),
  31.                 'selectable' => 2,
  32.                 'nuke'=>true
  33.             ),
  34.             'post' => array(
  35.                 'modelName' => 'Post',
  36.                 'notUseTitleOfRelation' => array('author'),
  37.             ),
  38.             'postCategory' => array(
  39.                 'modelName' => 'PostCategory',
  40.                 'linksManyToManyRelation' => array('post', 'category')
  41.             ),
  42.             'category' => array(
  43.                 'modelName' => 'Category',
  44.                 'modelAliasPlural' => 'Categories',
  45.             ),          
  46.         ));
  47.     }
  48.  
  49.  



Вот и Все.

Каждый ключ в этом массиве (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
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Обсуждение статей »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB