REPL есть у python, ruby, clojure. REPL — read-eval-print loop. Если описать на псевдокоде что такое REPL — это будет выглядеть как-то так:
Подобная реализация позволяет разработчику эксперементировать с кодом как ему вздумается без создания файлов. Вы можете совершить ошибку, Boris выдаст сообщение об этом, но продолжит работать ожидая новый код.

Boris доступен через composer:
Или же по старинке:
При старте Boris появляется приглашение:
Попробуйте что-то написать, Boris это обработает и выдаст результат. Если у вас длинное многострочное выражение, Boris соберет его вместе и выполнит вместе. Для отмены любых операций используется
Для выхода из утилиты используется
Все очень просто:
Здесь инициализируется утилита с глобальной переменной
Есть возможность добавить колбэки перед стартом утилиты. Существует два варианта их добавления:
Сначала мы передаем строку кода, которую Boris просто исполнит через
Ссылка на репозиторий.
while(true){ echo eval($input->get()); }
Подобная реализация позволяет разработчику эксперементировать с кодом как ему вздумается без создания файлов. Вы можете совершить ошибку, Boris выдаст сообщение об этом, но продолжит работать ожидая новый код.
Требования
- 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_dumpboris> $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.Ссылка на репозиторий.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Полезная штука?
37.33%Да215
13.02%Нет75
49.65%Я так и не понял зачем это вообще нужно286
Проголосовали 576 пользователей. Воздержались 117 пользователей.
