Console Applications  with ZF 2.0 Алексей Качаев Senior Software Engineer, Cogniance kachayev [at] gmail.com @kachayev htt...
Схема работы <ul><li>Что такое и зачем, разбор кейсов </li></ul><ul><li>Консольное приложение в разрезе </li></ul><ul><li>...
Что это такое? <ul><li>Request-reply </li></ul>
Что это такое? <ul><li>Dialog </li></ul>
Что это такое? <ul><li>Interactive </li></ul>
Когда это нужно? <ul><li>Администрирование приложения (start, restart, status, evn management etc) </li></ul><ul><li>Проце...
Почему? <ul><li>Меньше инфраструктуры </li></ul><ul><li>Меньше кода </li></ul><ul><li>Меньше багов =) </li></ul><ul><li>Re...
Это сложно? /home/kachayev/fwdays/server.php  Usage: php /home/kachayev/fwdays/server.php <?php foreach($_SERVER as $key =...
Почему PHP/Zend/<подставь свое>..? <ul><li>Имплементация бизнес-логики </li></ul><ul><li>Интеграция с веб-приложением </li...
Попрактикуемся? <ul><li>администрирование пользователей:  </li></ul><ul><ul><li>просмотреть статистику, </li></ul></ul><ul...
Консольное приложение в разрезе <ul><li>Особенности среды выполнения: php-cli (пользователи!), env, superglobals </li></ul...
ZendConsoleGetopt <ul><li>Arguments, short/long options </li></ul><ul><li>Cumulative params and options </li></ul><ul><li>...
Параметры вызова скрипта <?php print_r($_SERVER['argv']);
ZendConsoleGetopt
ZendConsoleGetopt
Оформление вывода <ul><ul><li>ZendText </li></ul></ul><ul><ul><li>TableTable </li></ul></ul><ul><ul><li>FigletFiglet </li>...
ZendTextTable
Возможности ZendToolFramework
Архитектура ZendToolFramework <ul><li>все тот же MVC </li></ul><ul><li>«единая точка» входа и роутинг </li></ul><ul><li>Ma...
Manifest, Registry, Metadata
Manifest, Registry, Metadata
User provider: схема
Результат
Request, response
Request, response
Диалог с пользователем <ul><li>ZendToolFrameworkClientInteractive* </li></ul>
Unix way: pipe
Unix way: pipe
Unix way: pipe
Unix way: перенаправление вывода
Unix way: перенаправление вывода
ZF2.0 RFC <ul><li>http://framework.zend.com/wiki/display/ZFDEV2/RFC+-+CLI </li></ul><ul><li>Компонент ZendConsole: </li></...
Прототипы и реализации <ul><li>https://github.com/robertbasic/zf2-cli </li></ul><ul><li>https://github.com/zucchi/zf2-1 </...
Спасибо за внимание!
Upcoming SlideShare
Loading in …5
×

Console application with ZF 2.0

3,027 views

Published on

Create console applications with using ZF 1.X / 2.0

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,027
On SlideShare
0
From Embeds
0
Number of Embeds
656
Actions
Shares
0
Downloads
13
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Console application with ZF 2.0

  1. 1. Console Applications with ZF 2.0 Алексей Качаев Senior Software Engineer, Cogniance kachayev [at] gmail.com @kachayev http://github.com/kachayev http://codemehanika.com
  2. 2. Схема работы <ul><li>Что такое и зачем, разбор кейсов </li></ul><ul><li>Консольное приложение в разрезе </li></ul><ul><li>Реализация базовых аспектов с ZF1.*/2.0 </li></ul><ul><li>Продвинутые техники и подходы </li></ul><ul><li>Прим. 1: more linux </li></ul><ul><li>Прим. 2: dev mode </li></ul>
  3. 3. Что это такое? <ul><li>Request-reply </li></ul>
  4. 4. Что это такое? <ul><li>Dialog </li></ul>
  5. 5. Что это такое? <ul><li>Interactive </li></ul>
  6. 6. Когда это нужно? <ul><li>Администрирование приложения (start, restart, status, evn management etc) </li></ul><ul><li>Процедуры деплоймента </li></ul><ul><li>Выполняемые по времени задачи </li></ul><ul><li>То, что не требует внешнего доступа </li></ul><ul><li>Везде, где консоль покрывает требования =) </li></ul>
  7. 7. Почему? <ul><li>Меньше инфраструктуры </li></ul><ul><li>Меньше кода </li></ul><ul><li>Меньше багов =) </li></ul><ul><li>Reusable </li></ul>Аналоги и заменители? wget -O — http://webserver/supercontroler/superaction?some=params
  8. 8. Это сложно? /home/kachayev/fwdays/server.php Usage: php /home/kachayev/fwdays/server.php <?php foreach($_SERVER as $key => $value) { print &quot;$key => $valuen&quot;; } ?>
  9. 9. Почему PHP/Zend/<подставь свое>..? <ul><li>Имплементация бизнес-логики </li></ul><ul><li>Интеграция с веб-приложением </li></ul><ul><li>Реиспользование кода сервисных слоев </li></ul>
  10. 10. Попрактикуемся? <ul><li>администрирование пользователей: </li></ul><ul><ul><li>просмотреть статистику, </li></ul></ul><ul><ul><li>отфильтровать по критериям, </li></ul></ul><ul><ul><li>получить информацию о пользователе, </li></ul></ul><ul><ul><li>«забанить» по идентификатору </li></ul></ul><ul><li>управление notification-ами: </li></ul><ul><ul><li>просмотреть шаблон по названию, </li></ul></ul><ul><ul><li>отправить сообщение </li></ul></ul>
  11. 11. Консольное приложение в разрезе <ul><li>Особенности среды выполнения: php-cli (пользователи!), env, superglobals </li></ul><ul><li>stdin, stdout, stderr </li></ul><ul><li>Параметры вызова </li></ul><ul><li>Вывод результатов и форматирование </li></ul><ul><li>Интерактивное взаимодействие и диалоги </li></ul>
  12. 12. ZendConsoleGetopt <ul><li>Arguments, short/long options </li></ul><ul><li>Cumulative params and options </li></ul><ul><li>Freeform params </li></ul><ul><li>Numeric options </li></ul><ul><li>Usage message </li></ul><ul><li>https://github.com/zendframework/zf2/blob/master/tests/Zend/Console/GetoptTest.php </li></ul>
  13. 13. Параметры вызова скрипта <?php print_r($_SERVER['argv']);
  14. 14. ZendConsoleGetopt
  15. 15. ZendConsoleGetopt
  16. 16. Оформление вывода <ul><ul><li>ZendText </li></ul></ul><ul><ul><li>TableTable </li></ul></ul><ul><ul><li>FigletFiglet </li></ul></ul><ul><li>ZendToolFrameworkClientConsoleResponseDecorator </li></ul><ul><ul><li>AlignCenter </li></ul></ul><ul><ul><li>Blockize </li></ul></ul><ul><ul><li>Colorizer </li></ul></ul><ul><ul><li>Indention </li></ul></ul>
  17. 17. ZendTextTable
  18. 18. Возможности ZendToolFramework
  19. 19. Архитектура ZendToolFramework <ul><li>все тот же MVC </li></ul><ul><li>«единая точка» входа и роутинг </li></ul><ul><li>Manifest, Provider </li></ul><ul><li>Request/Response </li></ul><ul><li>Help System </li></ul>
  20. 20. Manifest, Registry, Metadata
  21. 21. Manifest, Registry, Metadata
  22. 22. User provider: схема
  23. 23. Результат
  24. 24. Request, response
  25. 25. Request, response
  26. 26. Диалог с пользователем <ul><li>ZendToolFrameworkClientInteractive* </li></ul>
  27. 27. Unix way: pipe
  28. 28. Unix way: pipe
  29. 29. Unix way: pipe
  30. 30. Unix way: перенаправление вывода
  31. 31. Unix way: перенаправление вывода
  32. 32. ZF2.0 RFC <ul><li>http://framework.zend.com/wiki/display/ZFDEV2/RFC+-+CLI </li></ul><ul><li>Компонент ZendConsole: </li></ul><ul><ul><li>Парсинг параметров </li></ul></ul><ul><ul><li>Вывод данных в stdout, stderr </li></ul></ul><ul><ul><li>OS env </li></ul></ul><ul><ul><li>Interactive input </li></ul></ul><ul><li>Компонент ZendCli </li></ul><ul><ul><li>Структура аналогична ZendMVC, bootstrap </li></ul></ul><ul><ul><li>application, request, response </li></ul></ul><ul><ul><li>Mvc-like router (возможно с двойственной диспечирезацией) </li></ul></ul><ul><ul><li>Help system </li></ul></ul>
  33. 33. Прототипы и реализации <ul><li>https://github.com/robertbasic/zf2-cli </li></ul><ul><li>https://github.com/zucchi/zf2-1 </li></ul><ul><li>… ? </li></ul>
  34. 34. Спасибо за внимание!

×