
Дізнайтесь більше про нові кар'єрні можливості в EchoUA. Цікаві проекти, ринкова оплата, гарний колектив. Надсилайте резюме та приєднуйтеся до нас.
“Bash? Беляш? Гм. Що? Як? Чому”? – якщо саме ці слова вимовляв Ваш внутрішній голос, коли Ви, начитавшись статей в Інтернеті, вирішили за допомогою Bash автоматизувати рутинну задачу, то ця стаття для Вас. І вона ще більше для Вас, якщо Ви вже знаєте PHP – зараз Ви дізнаєтеся також, що PHP чудово підходить не лише для розробки сайтів, але й для консольних додатків.
Передбачається, що Ви використовуєте Linux і знаєте PHP не нижче початкового рівня:
Що таке PHP CLI?
Отже, ось як виглядає найпростіший додаток на PHP:
<?phpecho "Hello world";
Його можна запустити не лише через браузер, але й через консоль. Якщо ми розмістимо цей код у файлі з назвою hello_world.php
:
php hello_world.php
Висновок буде очікуваним:
Hello world
У консольних PHP додатках (CLI) Ви можете використати все те, що і в звичайних PHP-додатках, наприклад, записувати і читати файли функціями file_put_contents
і file_get_contents
.
Отримання аргументів з командного рядка
Менш знайомими для звичайних PHP-розробників є функції для роботи з командою рядком.
Якщо Ви хочете передати з командою рядка якісь аргументи у свій скрипт:
php script.php arg1 arg2 arg3
…то прочитати їх з PHP можна за допомогою глобальної змінної $argv. У даному випадку її вміст виглядатиме ось так:
array (4) { [0]=> string (10) "script.php" [1]=> string (4) "arg1" [2]=> string (4) "arg2" [3]=> string (4) "arg3"}
Зверніть увагу, що значенням з індексом 0 завжди є ім’я скрипта, що запускається. В деяких випадках для читання списку аргументів також може бути зручною функція getopt.
Читання користувацького введення
Функція readline
створена для запиту призначеного для користувача введення і використовується у такий спосіб:
$line = readline ('Повідомлення, яке буде виведено перед запитом');echo 'Ви ввели: '. $line;
Виконання сторонніх додатків
Коли можливостей стандартної бібліотеки PHP бракує, на допомогу приходить функція system: за її допомогою можна викликати сторонні додатки.
Якщо нам, наприклад, треба стерти з екрана все попереднє виведення, то з PHP ми зможемо зробити це ось так:
system ('clear');
Це виконає команду clear
, неначе ви самі ввели її в консоль.
Форматування виведення
Звичайно, Ви не можете виводити HTML-теги функцією echo, як Ви робили раніше, і сподіватися на відформатоване виведення, але можливість задати базове оформлення все ж залишається завдяки так званим “ескейп-послідовностям”:
echo "e[1m жирний e[0m";echo "e[3m курсив e[0m";echo "e[4m нижнє підкреслення e[0m";
Повний список варіантів форматування.
Скорочене написання
Тепер Ви знаєте, як робити ці консольні додатки на PHP! Проте, погодьтеся, писати щоразу
php название_скрипта.php
не дуже весело і навіть трохи сумно.
Цю проблему можна розв’язати, просто додайте на початку файлу #!/usr/bin/php
, де /usr/bin/php
є адресою Вашого PHP-інтерпретатора.
Підсумковий файл повинен вийти приблизно таким:
#!/usr/bin/php<?phpecho "Мене можна запустити без 'php ' перед моєю назвою";
Якщо назвати його myapp (без розширення), то за умови, що Ви знаходитеся в теці з файлом, запустити його можна буде ось так:
myapp
А щоб запускати Ваш консольний додаток з будь-якої наявної, декількох неіснуючих і однієї неймовірної теки, достатньо просто перенести його в каталог /usr/bin. Наприклад, ось так:
mv myapp /usr/bin/myapp
Невеликий приклад реального коду для закріплення знань: FastAdminer – консольний PHP-додаток, у якому використовується все описане в статті.
Київ, Харків, Одеса, Дніпро, Запоріжжя, Кривий Ріг, Вінниця, Херсон, Черкаси, Житомир, Хмельницький, Чернівці, Рівне, Івано-Франківськ, Кременчук, Тернопіль, Луцьк, Ужгород, Кам'янець-Подільський, Стрий - за статистикою саме з цих міст програмісти найбільше переїжджають працювати до Львова. А Ви розглядаєте relocate?