Boris — небольшой, но надежный REPL для php

от автора

REPL есть у python, ruby, clojure. REPL — read-eval-print loop. Если описать на псевдокоде что такое REPL — это будет выглядеть как-то так:

while(true){     echo eval($input->get()); } 

Подобная реализация позволяет разработчику эксперементировать с кодом как ему вздумается без создания файлов. Вы можете совершить ошибку, Boris выдаст сообщение об этом, но продолжит работать ожидая новый код.

image

Требования

  • PHP >= 5.3
  • The Readline functions
  • The PCNTL functions
  • The POSIX functions

Установка

Boris доступен через composer:

composer require d11wtq/boris dev-master 

Или же по старинке:

git clone git://github.com/d11wtq/boris.git cd boris ./bin/boris 

Использование

При старте Boris появляется приглашение:

boris> 

Попробуйте что-то написать, Boris это обработает и выдаст результат. Если у вас длинное многострочное выражение, Boris соберет его вместе и выполнит вместе. Для отмены любых операций используется ctrl + c. По умолчанию все результаты выдаются функцией var_dump

boris> $x = 1; int(1) boris> $y = 2; int(2) boris> "x + y = " . ($x + $y); string(9) "x + y = 3" boris> exit; 

Для выхода из утилиты используется ctrl + D.

Использование в проектах

Все очень просто:

require_once 'lib/autoload.php';  $boris = new \Boris\Boris('myapp> '); $boris->setLocal(array('appContext' => $appContext)); $boris->start(); 

Здесь инициализируется утилита с глобальной переменной appContext, доступной из Boris.

Есть возможность добавить колбэки перед стартом утилиты. Существует два варианта их добавления:

$boris->onStart('$foo = 42; $bar = 2; echo "Hello Boris!\n";');  $boris->onStart(function($worker, $scope){   extract($scope);   echo '$foo * $bar = ' . ($foo * $bar) . "\n";   $worker->setLocal('name', 'Chris'); }); 

Сначала мы передаем строку кода, которую Boris просто исполнит через eval. Затем исполним callback, который экспортирует в себя данные из области видимости Boris, произведет с ними некоторые действия, а затем добавит переменную $name в Boris.

Ссылка на репозиторий.

Полезная штука?

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Никто ещё не голосовал. Воздержавшихся нет.

ссылка на оригинал статьи http://habrahabr.ru/post/179145/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *