Upload
alexey-kachayev
View
2.639
Download
0
Embed Size (px)
DESCRIPTION
Create console applications with using ZF 1.X / 2.0
Citation preview
Console Applications with ZF 2.0
Алексей КачаевSenior Software Engineer, Cogniance
kachayev [at] gmail.com@kachayevhttp://github.com/kachayevhttp://codemehanika.com
Схема работы
Что такое и зачем, разбор кейсов
Консольное приложение в разрезе
Реализация базовых аспектов с ZF1.*/2.0
Продвинутые техники и подходы Прим. 1: more linux
Прим. 2: dev mode
Что это такое?
Request-reply
Что это такое?
Dialog
Что это такое?
Interactive
Когда это нужно?
Администрирование приложения (start, restart, status, evn management etc)
Процедуры деплоймента
Выполняемые по времени задачи
То, что не требует внешнего доступа
Везде, где консоль покрывает требования =)
Почему?
Меньше инфраструктуры
Меньше кода
Меньше багов =)
Reusable
Аналоги и заменители?
wget -O — http://webserver/supercontroler/superaction?some=params
Это сложно?/home/kachayev/fwdays/server.php Usage: php /home/kachayev/fwdays/server.php<?php foreach($_SERVER as $key => $value) { print "$key => $value\n"; }?>
Почему PHP/Zend/<подставь свое>..?
Имплементация бизнес-логики
Интеграция с веб-приложением
Реиспользование кода сервисных слоев
Попрактикуемся?
администрирование пользователей:
– просмотреть статистику,
– отфильтровать по критериям,
– получить информацию о пользователе,
– «забанить» по идентификатору
управление notification-ами:
– просмотреть шаблон по названию,
– отправить сообщение
Консольное приложение в разрезе
Особенности среды выполнения: php-cli (пользователи!), env, superglobals
stdin, stdout, stderr
Параметры вызова
Вывод результатов и форматирование
Интерактивное взаимодействие и диалоги
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
Параметры вызова скрипта
<?php print_r($_SERVER['argv']);
Zend\Console\Getopt
Zend\Console\Getopt
Оформление вывода
Zend\Text\
– Table\Table
– Figlet\Figlet
Zend\Tool\Framework\Client\Console\ResponseDecorator\
– AlignCenter
– Blockize
– Colorizer
– Indention
Zend\Text\Table
Возможности Zend\Tool\Framework
Архитектура Zend\Tool\Framework
все тот же MVC
«единая точка» входа и роутинг
Manifest, Provider
Request/Response
Help System
Manifest, Registry, Metadata
Manifest, Registry, Metadata
User provider: схема
Результат
Request, response
Request, response
Диалог с пользователем
Zend\Tool\Framework\Client\Interactive\*
Unix way: pipe
Unix way: pipe
Unix way: pipe
Unix way: перенаправление вывода
Unix way: перенаправление вывода
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
Прототипы и реализации
https://github.com/robertbasic/zf2-cli
https://github.com/zucchi/zf2-1
…?
Спасибо за внимание!