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_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/
Добавить комментарий