• 39311
  • 17
  • 12
Нравится блог?
Подписывайтесь!

Интерактивные shell’ы для PHP

Программисты python и ruby наверняка не раз пользовались такой замечательной штукой как интерактивная консоль. Такая консоль позволяет быстро потестить какой-то код, функцию или класс, да и просто удобно при изучении языка. К сожалению, по непонятной мне причине, авторы php не утрудили себя созданием аналогичной вещи.

Однако недавно, при написании топика про HipHop, я заметил, что фейсбуковцы уже создали такой инструмент – phpsh. Прежде чем его попробовать, я решил поискать в Интернете и другие решения, и вот что мне удалось найти.

PHP Interactive mode

http://www.php.net/manual/en/features.commandline.interactive.php

Оказывается, в интерпретаторе php уже есть интерактивный режим, для этого надо запустить его с ключом -a.

$ php -a
Interactive shell

php > echo 5+8;
13
php > function addTwo($n)
php > {
php { return $n + 2;
php { }
php > var_dump(addtwo(2));
int(4)
php >

Появился в версии 5.1.0.
Из минусов: в Windows работает очень убого, вылетает при первом fatal error.
В *nix-ах работает автодополнение благодаря GNU Readline. Автодополнение работает для функции, констант, названий классов, переменных, статических методов. Подойдет, если вы работаете в линуксе :)

phpa

http://david.acz.org/phpa/
PHP-скрипт. Достаточно запустить его командой

$ php phpa.php 

Не забудьте поставить права на выполнение. Поддерживает автодополнение функций и констант. Если код печатает что-то в вывод, то это и выводится, иначе выводится значение выражения.

>>> $x = pow(2, 10)
>>> echo $x
1024
>>> $x * 4
4096

Не работает в windows вообще, так как обязательно наличие библиотеки readline (http://www.php.net/readline). Также вылетает при fatal error.

PHP Shell

http://jan.kneschke.de/projects/php-shell/

Возможности:

  • автодополнение tab-ом (если есть readline())
  • корректно обрабатывает fatal error
  • внутреняя справка
  • работает везде где работает php

Работает в php5. Автодополнение работает не только для функции, классов и т.д. но и для экземпляров классов, т.е. типа $object->method(); Также может показать DocComment-ы для классов, методов и функции, для этого надо набрать ? и имя класса.

PHP Shell

Отлавливание ошибки:

PHP Shell

В целом неплохая штука, на мой взгляд более лучше чем два предыдущих.

phpsh

http://www.phpsh.org/

Был сотворен в недрах facebook. Имеет автодополнение, историю команд даже между сессиями(!), просмотр документации. Более того, phpsh интегрируется с ctags - это позволит использовать все его фичи для ваших собственных классов, функции и т.д, т.е. загрузить ваш собственный codebase.

В анонсе разработчики утверждают, что phpsh работает везде, где работает python2.4 с модулем subprocess и, опять же :), GNU readline, т.е. Linux и OSX, но не Windows. Требования для python: pysqlite, readline. Мне удалось запустить phpsh под cygwin, для этого пришлось изрядно постараться:

  1. Сначала ставим последнюю версию cygwin.
  2. В установщике ставим пакеты python и gcc (нужен для сборки pysqlite).
  3. Запустив cygwin, для python ставим пакеты readline (ставится легко через easy_install) и pysqlite (придется собрать из исходников, что в свою очередь потребует скачать исходники sqlite)
  4. Устанавливаем php (cli) под windows, т.к. под cygwin мне так и не удалось поставить php (да это и не нужно в принципе).
  5. Качаем phpsh, распаковываем, меняем кое-что в питоновском файле phpsh, чтобы он использовал виндовый php (иначе виндовый php не найдет cygwin-ский файл /home/galymzhan/phpsh).

Запускается просто: заходим в нужную папку и набираем ./phpsh

Чтобы напечатать значение выражения, надо ставить перед ним знак =

phpsh

Работа с ctags:

phpsh

Кстати, при fatal error phpsh просто перезапускается :)

Итоги...

подводить трудно, так как я так и не смог посмотреть как инструменты работают в linux-е (ввиду отсутствия установленной ОС на работе). Тем более есть еще и другие альтернативы:

  • php interactive console - php-скрипт, обязательно наличие readline.
  • phpa-norl - тоже что и phpa, только под windows. Автор утверждает, что вырезал все readline-ские функции

На мой взгляд, лучшим является phpsh - единственный, который нормально заработал под windows (хоть и с небольшим шаманством), и обладающий всеми нужными возможностями.

15 июля 2010, 9:47
2991

Загрузка...
Loading...

Комментарии

Оставьте свой комментарий

Спасибо за открытие блога в Yvision.kz! Чтобы убедиться в отсутствии спама, все комментарии новых пользователей проходят премодерацию. Соблюдение правил нашей блог-платформы ускорит ваш переход в категорию надежных пользователей, не нуждающихся в премодерации. Обязательно прочтите наши правила по указанной ссылке: Правила

Также можно нажать Ctrl+Enter

Популярные посты

Юрист, пришедший в школу учителем по зову души, о главной проблеме системы образования

Юрист, пришедший в школу учителем по зову души, о главной проблеме системы образования

Алматинский учитель поставил диагноз системе, частью которой является образование. Будучи успешным юристом, имевший степень МВА, он вдруг развернул траекторию своей карьеры, став обычным учителем.
Zhumanova
22 сент. 2017 / 16:26
  • 10379
  • 33
«Это будут твои большие похороны». Гуф высказался о Скриптоните и Басте

«Это будут твои большие похороны». Гуф высказался о Скриптоните и Басте

Досталось и Скриптониту, который ранее опубликовал запись, о том, что больше не будет сниматься в клипе Гуфа и Тимати. "Я тебя ни о чем больше не попрошу, казах ты мой дорогой" - высказался рэпер.
tala03
21 сент. 2017 / 15:48
  • 4450
  • 12
«Честный взгляд» госслужащего: «Знала бы, что ты такой гнилой, я бы тебя не брала»

«Честный взгляд» госслужащего: «Знала бы, что ты такой гнилой, я бы тебя не брала»

Мы не такие блатные. Да, нас унижают руководители, возомнившие себя ханами, часто наши права не реализуются в должной мере. И я всегда задавался, почему на самом деле нет нормальных условий и льгот...
WriterKz
23 сент. 2017 / 0:41
Почему депутат Божко хочет ограничить приток сельской молодёжи в города?

Почему депутат Божко хочет ограничить приток сельской молодёжи в города?

Вице-спикер Мажилиса Владимир Божко остановился на некоторых деталях известного конфликта в Астане возле строящегося «Абу Даби Плаза», затронув проблему «многочисленной сельской молодёжи»...
openqazaqstan
19 сент. 2017 / 13:16
  • 2993
  • 72
Астана перестает быть городом-музеем, или Почему я хотел бы жить в столице

Астана перестает быть городом-музеем, или Почему я хотел бы жить в столице

Наш главный город страны стал избавляться от уже вполне неуместных моветонных клише, которые громоздились над ней, как черное облако над Мордором.
tentser
22 сент. 2017 / 21:04
  • 2088
  • 73
Дагестанские «миротворцы» борются за справедливость в Мьянме на улицах Москвы

Дагестанские «миротворцы» борются за справедливость в Мьянме на улицах Москвы

Парней начали осуждать за поступок в социальных сетях. Популярные группы Кавказа назвали выходку парней дикой, и пояснили, что они позорят нацию и религию.
tala03
20 сент. 2017 / 16:42
  • 1677
  • 53
Заметка №16. «Burger shop». Съесть и не обляпаться практически невозможно

Заметка №16. «Burger shop». Съесть и не обляпаться практически невозможно

Если честно, для нас формат заведения был в диковинку - раньше нам доводилось есть бургеры в сетевых ресторанах фаст-фуда или же в заведениях, где кроме бургеров подают еще много разных блюд.
zhanuska_checkedboe
19 сент. 2017 / 15:12
  • 1433
  • 16
Как КНДР «уничтожила» американские самолеты и авианосец

Как КНДР «уничтожила» американские самолеты и авианосец

Серию коллажей, показывающую как ракеты КНДР нанесли поражения американским самолетам, продемонстрировали в северокорейских СМИ.
tala03
24 сент. 2017 / 17:58
  • 1323
  • 9
Время забыть безумные траты молодости: навыки, которыми ты должен овладеть к 30 годам

Время забыть безумные траты молодости: навыки, которыми ты должен овладеть к 30 годам

Смысл бюджета в том, чтобы знать, куда ты, блин, потратил бабки. В том, чтобы в конце месяца, ты сел, почитал свои записи и понял, какой ты придурок. И принял уже наконец здравое решение, что куда идет.
Lesch
24 сент. 2017 / 21:03
  • 1281
  • 45