Upload
oleg-poludnenko
View
773
Download
0
Embed Size (px)
DESCRIPTION
Доклад о работе в Shell, исполнении PHP в Shell, использовании REPL в PHP, а также эпический батл между Boris и PsySH. PHP User Group Ukraine в социальных сетях: https://www.facebook.com/pug.ukraine https://vk.com/pug.ukraine https://www.linkedin.com/groups/PHP-User-Group-Ukraine-6703717
Citation preview
PHP + Shell = ♥
Макс Волошин, PUG Dnepr #2
● работа в Shell● исполнение PHP в Shell● использование REPL● сравнение Boris и PsySH
О чём рассказ?
Мы работаем с Shell когда● используем эмулятор терминала:
iTerm / Gnome Terminal / Konsole / xterm / ...● заходим по ssh на удалённую машину● используем PHP функции:
/ / / / ...● предоставляем интерфейс командной строки к
своему приложению● ...
Зачем нам это?
Что такое Shell?
Shell – интерпретатор командного языка,который определяется стандартом POSIX
Существуют различные реализации Shell● оригинальный Bourne Shell – sh – используется в
большинстве версий UNIX● Bourne Again Shell – bash – используется во многих
дистрибутивах Linux● Debian Almquist Shell – dash – используется в Debian● Z Shell – zsh – используется продвинутыми
пользователями командной строки :)● ...
Что такое Shell?
Запуск PHP приложения из Shell
В Shell можно использовать переменные
Shell переменные и окружение
Узнать набор текущих переменных окружения
Переменные окружения
Превратить простую переменную в переменную окружения
…
Переменные окружения
Индивидуальные переменные для новой команды
…
Переменные окружения
Передача параметров из Shell в PHP
Использование переменных окружения
Использование аргументов вызова
↓
Запуск приложения в POSIX стиле
…(никто не имеет права исполнять файл)
…(владелец имеет право исполнить файл)
Запуск приложения в POSIX стиле
Запуск приложения в POSIX стиле
→
Запуск приложения в POSIX стиле
Потоки ввода/вывода/ошибок
AppSTDIN
STDOUT
STDERR
Работа с потоком вывода
Работа с потоком ошибок
Работа с потоком ошибок
Работа с потоком ввода
Работа с потоком ввода
Работа с потоком ввода без блокировки
Работа с потоком ввода без блокировки
Композиция Shell программ
Последовательное выполнение
Успешность выполнения
Условное выполнение
Pipeline выполнение
REPL – read-eval-print loop
Чтобы быстро узнать результат одного или нескольких выражений● вы изучаете язык● вы вспоминаете язык● вы проверяете знание языка
Зачем нам это?
Пример из жизни PHP разработчика
– возможность исполнять код из аргумента без тегов:
– запуск в режиме интерактивной среды:
REPL в PHP
Интерактивная среда не является REPL● результат вычисления не выводится● при ошибках процесс обрывается
Выход есть● Boris – tiny REPL for PHP ● PsySH – runtime developer console, interactive
debugger and REPL for PHP
REPL в PHP
REPL в PHP
Boris vs PsySH
Boris PsySH
Первый коммит Nov 6, 2011 Apr 8, 2012
Звёзды на Github 1 470 + 420 +
Форки на Github 80 + 30 +
Загрузок на Packagist за месяц 230 000 + 2 000 +
Статистика
Установка
Boris PsySH
Phar + +
Composer + +
Boris vs PsySH
Работа в REPL
Boris PsySH
Возможность не писать в конце
Boris PsySH
Возможность не писать в конце
Boris PsySH
Возможность не писать в конце
Boris PsySH
Отображение встроенных типов
Boris PsySH
Отображение встроенных типов
Boris PsySH
Ограничение глубины вывода
Boris PsySH
Ограничение глубины вывода
Boris PsySH
Ограничение глубины вывода
Boris PsySH
Обработка нефатальных ошибок
Boris PsySH
Обработка нефатальных ошибок
Boris PsySH
Обработка нефатальных ошибок
Boris PsySH
Обработка нефатальных ошибок
Boris PsySH
Обработка исключений
Boris PsySH
Обработка исключений
Boris PsySH
Обработка бесконечных циклов
Boris PsySH
Обработка бесконечных циклов
Boris PsySH
Обработка бесконечных циклов
Boris PsySH
Обработка бесконечных циклов
Boris PsySH
Обработка бесконечных циклов
Boris vs PsySH
Внешняя конфигурация
Boris PsySH
Файл конфигурации
Boris PsySH
Файл конфигурации
Boris PsySH
Файл конфигурации
Boris PsySH
Подключение индивидуальных файлов
Boris PsySH
Подключение индивидуальных файлов
Boris vs PsySH
Интеграция со своим приложением
Чтобы понизить порог входав разрабатываемую систему
Зачем нам это?
● создание своей точки входа● использование своих переменных● написание своих обработчиков для значений
Какие возможности REPL нам нужны?
Boris PsySH
Своя точка входа
Boris PsySH
Своя точка входа
Boris PsySH
Своя точка входа
Boris PsySH
Свои переменные
Boris PsySH
Свои переменные
Boris PsySH
Свои переменные
Свой обработчик значений
Boris PsySH
Свой обработчик значений
Boris PsySH
Свой обработчик значений
Свой обработчик значений
Boris PsySH
Свой обработчик значений
Boris PsySH
Свой обработчик значений
Boris
Свой обработчик значений
Boris
Свой обработчик значений
Boris PsySH
Свой обработчик значений
PsySH
Свой обработчик значений
PsySH
Свой обработчик значений
Boris PsySH
Boris PsySH
Несколько обработчиков
Boris PsySH
Несколько обработчиков
Boris PsySH
принимает массив
Несколько обработчиков
Рекурсивность обработчиков
Boris PsySH
Рекурсивность обработчиков
Boris PsySH
Рекурсивность обработчиков
Boris PsySH
Итого
Boris : PsySH
… кроме этого в PsySH еще много всего хорошегоhttp://psysh.org/