34
Console Applications with ZF 2.0 Алексей Качаев Senior Software Engineer, Cogniance kachayev [at] gmail.com @kachayev http://github.com/kachayev http://codemehanika.com

Console application with ZF 2.0

Embed Size (px)

DESCRIPTION

Create console applications with using ZF 1.X / 2.0

Citation preview

Page 1: Console application with ZF 2.0

Console Applications with ZF 2.0

Алексей КачаевSenior Software Engineer, Cogniance

kachayev [at] gmail.com@kachayevhttp://github.com/kachayevhttp://codemehanika.com

Page 2: Console application with ZF 2.0

Схема работы

Что такое и зачем, разбор кейсов

Консольное приложение в разрезе

Реализация базовых аспектов с ZF1.*/2.0

Продвинутые техники и подходы Прим. 1: more linux

Прим. 2: dev mode

Page 3: Console application with ZF 2.0

Что это такое?

Request-reply

Page 4: Console application with ZF 2.0

Что это такое?

Dialog

Page 5: Console application with ZF 2.0

Что это такое?

Interactive

Page 6: Console application with ZF 2.0

Когда это нужно?

Администрирование приложения (start, restart, status, evn management etc)

Процедуры деплоймента

Выполняемые по времени задачи

То, что не требует внешнего доступа

Везде, где консоль покрывает требования =)

Page 7: Console application with ZF 2.0

Почему?

Меньше инфраструктуры

Меньше кода

Меньше багов =)

Reusable

Аналоги и заменители?

wget -O — http://webserver/supercontroler/superaction?some=params

Page 8: Console application with ZF 2.0

Это сложно?/home/kachayev/fwdays/server.php Usage: php /home/kachayev/fwdays/server.php<?php foreach($_SERVER as $key => $value) { print "$key => $value\n"; }?>

Page 9: Console application with ZF 2.0

Почему PHP/Zend/<подставь свое>..?

Имплементация бизнес-логики

Интеграция с веб-приложением

Реиспользование кода сервисных слоев

Page 10: Console application with ZF 2.0

Попрактикуемся?

администрирование пользователей:

– просмотреть статистику,

– отфильтровать по критериям,

– получить информацию о пользователе,

– «забанить» по идентификатору

управление notification-ами:

– просмотреть шаблон по названию,

– отправить сообщение

Page 11: Console application with ZF 2.0

Консольное приложение в разрезе

Особенности среды выполнения: php-cli (пользователи!), env, superglobals

stdin, stdout, stderr

Параметры вызова

Вывод результатов и форматирование

Интерактивное взаимодействие и диалоги

Page 12: Console application with ZF 2.0

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

Page 13: Console application with ZF 2.0

Параметры вызова скрипта

<?php print_r($_SERVER['argv']);

Page 14: Console application with ZF 2.0

Zend\Console\Getopt

Page 15: Console application with ZF 2.0

Zend\Console\Getopt

Page 16: Console application with ZF 2.0

Оформление вывода

Zend\Text\

– Table\Table

– Figlet\Figlet

Zend\Tool\Framework\Client\Console\ResponseDecorator\

– AlignCenter

– Blockize

– Colorizer

– Indention

Page 17: Console application with ZF 2.0

Zend\Text\Table

Page 18: Console application with ZF 2.0

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

Page 19: Console application with ZF 2.0

Архитектура Zend\Tool\Framework

все тот же MVC

«единая точка» входа и роутинг

Manifest, Provider

Request/Response

Help System

Page 20: Console application with ZF 2.0

Manifest, Registry, Metadata

Page 21: Console application with ZF 2.0

Manifest, Registry, Metadata

Page 22: Console application with ZF 2.0

User provider: схема

Page 23: Console application with ZF 2.0

Результат

Page 24: Console application with ZF 2.0

Request, response

Page 25: Console application with ZF 2.0

Request, response

Page 26: Console application with ZF 2.0

Диалог с пользователем

Zend\Tool\Framework\Client\Interactive\*

Page 27: Console application with ZF 2.0

Unix way: pipe

Page 28: Console application with ZF 2.0

Unix way: pipe

Page 29: Console application with ZF 2.0

Unix way: pipe

Page 30: Console application with ZF 2.0

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

Page 31: Console application with ZF 2.0

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

Page 32: Console application with ZF 2.0

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

Page 33: Console application with ZF 2.0

Прототипы и реализации

https://github.com/robertbasic/zf2-cli

https://github.com/zucchi/zf2-1

…?

Page 34: Console application with ZF 2.0

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