Разработка консольных приложений и автоматизация задач на PHP: старый добрый язык как знакомая замена Bash
21К открытий21К показов
«Bash? Беляш? Эммм… Что? Как? По-че-му?» — если именно эти слова произносил ваш внутренний голос, когда вы, начитавшись статей в интернете, решили с помощью Bash автоматизировать ту рутинную задачу, то эта статья для вас. И она ещё более для вас, если вы уже знаете PHP — сейчас вы узнаете также то, что PHP отлично подходит не только для разработки сайтов, но и для консольных приложений.
Предполагается, что вы используете Linux и знаете PHP не ниже начального уровня:
Если вы совсем не знаете PHP
1. Текстовый курс;
2. Видеокурс.
Что такое PHP CLI
Итак, вот как выглядит самое простое приложение на PHP:
Но его можно запустить не только через браузер, но и через консоль. Если вы разместим этот код в файле с названием hello_world.php
:
Вывод будет весьма ожидаемым:
В консольных PHP приложениях (CLI) вы можете использовать всё то, что и в обычных PHP приложениях, например, записывать и читать файлы функциями file_put_contents
и file_get_contents
.
Получение аргументов из командной строки
Менее знакомыми для обычных PHP-разработчиков являются функции для работы с командой строкой.
Если вы хотите передать из командой строки какие-либо аргументы в свой скрипт:
…то прочитать их из PHP можно с помощью глобальной переменной $argv. В данном случае её содержимое будет выглядеть вот так:
Заметьте, что значением с индексом 0 всегда является имя запускаемого скрипта. В некоторых случаях для чтения списка аргументов также может быть удобна функция getopt.
Чтение пользовательского ввода
Функция readline
создана для запроса пользовательского ввода и используется следующим образом:
Выполнение сторонних приложений
Но когда возможностей стандартной библиотеки PHP не хватает, на помощь приходит функция system: с её помощью можно вызывать сторонние приложения.
Если нам, например, нужно стереть с экрана весь предыдущий вывод, то из PHP мы сможем сделать это вот так:
Это выполнит команду clear
, как будто вы сами ввели её в консоль.
Форматирование вывода
Конечно, вы не можете выводить HTML-теги функцией echo, как вы делали раньше, и надеяться на отформатированный вывод, но возможность задать базовое оформление всё же остается благодаря так называемым эскейп-последовательностям:
Полный список вариантов форматирования.
Сокращенное написание
Ура, теперь вы знаете, как делать настоящие консольные приложения на PHP! Но, согласитесь, писать каждый раз
не очень то весело и даже немножко грустненько.
Но и эту проблему можно решить, просто добавьте в начало файла #!/usr/bin/php
, где /usr/bin/php
является адресом вашего PHP интерпретатора.
Итоговый файл должен получиться примерно таким:
Если назвать его myapp (без расширения), то при условии, что вы находитесь в папке с файлом, запустить его можно будет вот так:
А чтобы запускать ваше консольное приложение из любой существующей, нескольких несуществующих и одной невероятной папки, достаточно просто перенести его в каталог /usr/bin. Например, вот так:
Небольшой пример реального кода для закрепления знаний: FastAdminer — консольное PHP приложение, в котором используется всё описанное в статье.
21К открытий21К показов