Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Разработка консольных приложений с ZendFramework 2.0

Dd3f18c87b851137000c7427d7bd5d32?s=47 fwdays
November 14, 2011

Разработка консольных приложений с ZendFramework 2.0

Dd3f18c87b851137000c7427d7bd5d32?s=128

fwdays

November 14, 2011
Tweet

More Decks by fwdays

Other Decks in Programming

Transcript

  1. Console Applications with ZF 2.0 Алексей Качаев Senior Software Engineer,

    Cogniance kachayev [at] gmail.com @kachayev http://github.com/kachayev http://codemehanika.com
  2. Схема работы  Что такое и зачем, разбор кейсов 

    Консольное приложение в разрезе  Реализация базовых аспектов с ZF1.*/2.0  Продвинутые техники и подходы  Прим. 1: more linux  Прим. 2: dev mode
  3. Что это такое? Request-reply

  4. Что это такое? Dialog

  5. Что это такое? Interactive

  6. Когда это нужно?  Администрирование приложения (start, restart, status, evn

    management etc)  Процедуры деплоймента  Выполняемые по времени задачи  То, что не требует внешнего доступа  Везде, где консоль покрывает требования =)
  7. Почему?  Меньше инфраструктуры  Меньше кода  Меньше багов

    =)  Reusable Аналоги и заменители? wget -O — http://webserver/supercontroler/superaction?some=params
  8. Это сложно? /home/kachayev/fwdays/server.php Usage: php /home/kachayev/fwdays/server.php <?php foreach($_SERVER as $key

    => $value) { print "$key => $value\n"; } ?>
  9. Почему PHP/Zend/<подставь свое>..?  Имплементация бизнес-логики  Интеграция с веб-приложением

     Реиспользование кода сервисных слоев
  10. Попрактикуемся?  администрирование пользователей: – просмотреть статистику, – отфильтровать по

    критериям, – получить информацию о пользователе, – «забанить» по идентификатору  управление notification-ами: – просмотреть шаблон по названию, – отправить сообщение
  11. Консольное приложение в разрезе  Особенности среды выполнения: php-cli (пользователи!),

    env, superglobals  stdin, stdout, stderr  Параметры вызова  Вывод результатов и форматирование  Интерактивное взаимодействие и диалоги
  12. Zend\Console\Getopt  Arguments, short/long options  Cumulative params and options

     Freeform params  Numeric options  Usage message  https://github.com/zendframework/zf2/blob/master/tests/Zend/Console/GetoptTest.php
  13. Параметры вызова скрипта <?php print_r($_SERVER['argv']);

  14. Zend\Console\Getopt

  15. Zend\Console\Getopt

  16. Оформление вывода Zend\Text\ – Table\Table – Figlet\Figlet Zend\Tool\Framework\Client\Console\ResponseDecorator\ – AlignCenter

    – Blockize – Colorizer – Indention
  17. Zend\Text\Table

  18. Возможности Zend\Tool\Framework

  19. Архитектура Zend\Tool\Framework  все тот же MVC  «единая точка»

    входа и роутинг  Manifest, Provider  Request/Response  Help System
  20. Manifest, Registry, Metadata

  21. Manifest, Registry, Metadata

  22. User provider: схема

  23. Результат

  24. Request, response

  25. Request, response

  26. Диалог с пользователем  Zend\Tool\Framework\Client\Interactive\*

  27. Unix way: pipe

  28. Unix way: pipe

  29. Unix way: pipe

  30. Unix way: перенаправление вывода

  31. Unix way: перенаправление вывода

  32. ZF2.0 RFC  http://framework.zend.com/wiki/display/ZFDEV2/RFC+-+CLI  Компонент Zend\Console: – Парсинг параметров

    – Вывод данных в stdout, stderr – OS env – Interactive input  Компонент Zend\Cli – Структура аналогична Zend\MVC, bootstrap – application, request, response – Mvc-like router (возможно с двойственной диспечирезацией) – Help system
  33. Прототипы и реализации  https://github.com/robertbasic/zf2-cli  https://github.com/zucchi/zf2-1  …?

  34. Спасибо за внимание!