Интерактивный режим PHP или PHP-шелл

Как только ты начинаешь изучать Python, волей-неволей сталкиваешься с интерактивным режимом. Интерактивный режим — это режим, в котором интерпретатор работае, как консоль. Есть приглашение, всё выполняется сразу же по вводу, есть мелкие удобства, типа истории и даже автодополнения. В Python это дефолтный режим, пишешь команду ‘python’ — и ты там.

Многим сразу понятно, в чём удобство: можно пробовать различные мелочи прямо на лету — от того, как работает та или иная функция/оператор языка, до ввода кусков своего кода. Особенно это удобно тем, кто программит спорадически, по-большей части, адаптируя чужие сниппеты и проверяя/изменяя работу других программистов. Я, например, из-за этого из мануалов по языкам не вылажу.

До сих пор я делал подобное через ‘php -r «кусок кода»‘, и делал это с неохотой: постоянно забывал имя этого параметра, да и вводить всё одной строкой, экранируя кавычки как-то неюзабельно. Оказывается, в PHP интерактивные режим есть, если посмотреть ‘php -h’ — то это первый параметр, ‘-a’. Я просто не знал, что это называется «интерактивный режим» :)

Однако не всё так гладко, по-дефолту режим заюзать не удастся (это же PHP — нужные и очевидные вещи тут лежат в самом дальнем, пыльном углу): для работы режима нужно, чтобы интерпретатор был скомпилирован с параметром ‘—with-readline’. Я не вдавался в подробности, но вроде бы для Windows это сделать невозможно вообще, ну а для Mac Os мне делать этого не хотелось — я и так накрасноглазился на сервере с этим.

Естетсвенно, обходное решение нашлось: бодрый парень Stefan Fischerländer написал скриптик phpa-norl, который делает всё то же самое, что и ‘php -a’, только без свистелок и перделок в виде истории и автокомплита (история в простом виде, впрочем, есть — выводится командой ‘h’). Ну нам не до жиру — быть бы живым. Вот так всё выглядит в итоге:

11 комментариев к “Интерактивный режим PHP или PHP-шелл”

  1. Ох, интерактивный режим Python это нечто феерическое, именно из-за него, я пожалуй и полюбил этот язык. Особенно этот режим мне пригодился при работе с django-фреймворком, при работе с дб, для тестирования различных обращений к ORM.

  2. Хм, забавная штуковина, что-то последнее время мир PHP только и делает, что сдирает вкусняшки у других, в Rails консоль отменная.
    Как шел-PHP применить я ума не приложу, в целом-то можно и в страничку встраивать, писать…
    Мне кажется консоли применимы в контексте какого-либо фреймворка только, например консольный генератор в YII или Symfony, я лично сейчас жду Fuel, их консаоль Oil краем глаза видел, надо будет щупать.

    1. Я написал про основное применение: тестирование примеров, чтобы понять, как всё работает.

  3. Ну как-то очень сомнительная штука в отрыве от фреймворков.

    Нужно тестить примеры, прям в редакторе забил и запустил в браузере, этим пэха и взял свой контингент — простотой.

    В общем применения для себя этой штуки не нашел.

  4. :) Python тоже изучали-с, и консоль как rails c или irb я использую постоянно, но это лишь потому, что совместно с фреймворком, когда удобно тестировать и проверять действия со всем багажом библиотек или язык не такой страиваемый как PHP.

    В PHP проще открыть в том же редакторе и запускать или xdebug или прям через браузер смотреть результаты.

    1. 1. Под любой пример надо создавать файл, в отрыве от проекта не протетсируешь.
      2. Без IDE не протестируешь.
      3. Когда по аське спрашивают какой-то сниппет набросать — что, опять запускать редактор/ИДЕ, создавать файл, проверять, как файл интерпретируется?

  5. 1. в эту консоль тоже не нашел как проект загрузить, она тоже в отрыве от проекта получается, что очень отличает от того же rails c — в этом и минус её, я писал
    2. файл php 1.php в консоле вот и тест, хотя php приложения не принято в консоли гонять, не для того создавался, но уже можно
    3. рекомендую, отличный сервис и потестить, выложить и сразу же подсветить

    1. 1 — перечитай ещё раз. Наоборот, то, что в консоли в отрыве от проекта можно тестировать — это плюс. Судя по тому, что ты ну ни в какую не понимаешь — не верю я, что ты учил Пайтон. Если и учил — учи ещё раз, все примеры там (да и вообще в пайтон-культуре) _только_ в консоли приводятся, и там отлично понятно, что есть интерактивность (когда полглавы назад инициализировали какие-то переменные и постоянно с ними какие-то манипуляции производятся.

      2 — мне надо для этого лезть в редактор, создать файл, сохранить, запустить в шелле, вернуться, чтобы исправить все ошибки (или исправлять проверять их редактором, что один хрен — запуск файла в шелле средствами редактора), короч — под каждый пук туда/сюда прыгать. Это не «накидать 5 строк другу по-быстрому» уже. Опять же — если тебе непонятно, о чём я, ещё раз — читай примеры к любому пуку Пайтона. И если хочешь написать свои возражения — пиши их на примере того, как в таком-то примере всё криво и неудачно через интерактивный режим.

  6. 1. пайтон я не учил, ты прав, не надо верить, я просто ознакамливался с языком и написал парочку веб-скриптиков, не более. причем тут консоль для php не пойму, ибо разные языки, разные инструменты. я выше уже писал, что пхп пытается содрать вкусности других языков, но это не применимо к пхп идеологически, так как задуман был и до сих пор еще реализован он как встроенный в html страницу языка.

    2. :) редактор как FAR у меня запущен всегда, лезть не надо, но если и надо то это не сложно Shift+F4 файл твой :) а про 5 строк это ты просил выше если надо, не я :)

    Опять же пайтон приплёл свой, зачем он тут вообще или ты консолей кроме пайтона не видел? чем bash не устраивает? perl консоль? или тот же irb? лисповая консоль еще интереснее :)

    Какие возражения, это у тебя всё в штыки, я например понимаю, что эту консоль в реальных проектах юзать сложно под PHP, это ибо десятки include и т.п. зависимости, она их не тянет, вот простое возражение :) что данная консоль в отрыве от фреймворка — чушь и баловство для велосепедистов, другим нужна консоль от фреймворка в котором они работают Zend, Symfony и Oil от Fuel ^)

    1. Я всегда воспринимаю в штыки глупую позицию «говорю то, о чём не знаю». Ещё раз: открой офф. мануал или любую культовую книгу по пайтону. Ничего не читай, просто смотри примеры. Осмысливай. И только после этого я готов обсуждать что-то на эту тему.

      >или ты консолей кроме пайтона не видел? чем bash не устраивает
      Тем, что когда мне нужно протестировать, как работает a = 0.3432423423 и a + «жопа» на пайтоне, а потом попробовать «а что если a + «попа»?» — то остальные консоли мне это сделать не помогут. И создавать файл для этого тоже глупо, если можно в реальном времени все штуки, которые пришли в голову, попробовать. Короч — читай примеры.

Комментарии закрыты.