Вы наверняка слышали про open source библиотеку Python Fire, представленную Google 2 марта — она автоматически создаёт интерфейсы командной строки (CLI). Если вы до сих пор не слышали об этом, обязательно прочтите нашу новость, где мы объяснили принципы работы Python Fire и привели несколько примеров кода.
Сейчас давайте разберём то, как просто создать аналог этой библиотеки для PHP. Дело в том, что хоть разработка Google и была воспринята сообществом как инновация, создание её базового функционала является тривиальной задачей.
Реализация
Для создания «PHP Fire» нам понадобится функция eval
из стандартной библиотеки и глобальная переменная $argv
. Для тех, кто не знаком с ними мы приводим полезные ссылки на документацию:
В итоге наш код будет выглядеть очень просто:
eval($argv[1].';');
Примеры работы
Процедурный стиль
Содержимое file.php:
function sum($a, $b)
{
echo $a + $b;
}
eval($argv[1].';');
Вызываем его из командной строки:
php file.php "sum(2, 3)"
В качестве ответа мы получим число 5.
Объектный стиль
Предположим, что в file.php описывается или импортируется какой-либо класс:
class Programmer
{
public function write($code)
{
echo $code;
}
}
eval($argv[1].';');
В такой ситуации консольный вызов будет иметь следующий вид:
php file.php "(new Programmer)->write('hello')"
Заключение
Таким образом, вместо установки и подключения библиотеки Python Fire от Google, вы можете добавить в конец файла одну единственную строчку и получить аналогичный результат.
Более того, этот способ доступен не только для PHP: функция eval
присутствует и в других языках программирования, например, она есть в JavaScript.