В данной статье мы будем создавать простейшее cli приложение на php. Программ которую будем писать на php — это сумма 2х чисел.
Для разработки будем использовать Symfony Console Component: https://symfony.com/doc/current/components/console.html
Приступим:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
// // перейдем в корневой каталог $ cd / // создадим в корне каталог для нашего приложения $ mkdir Sum // войдем в папку $ cd Sum // установим композер если его нет $ sudo apt install composer // установим компонент Symfony Console Component $ composer require symfony/console // создадим папку src для нашего приложения и войдем в нее $ mkdir src $ cd src // создадим файл $ touch SumCommand.php // откроем файл SumCommand.php на редактирование $ vi SumCommand.php // Добавим в него следующий код <?php namespace TrubinE; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Output\OutputInterface; class SumCommand extends Command { public function configure() { $this->setName("sum") ->setDescription("Sum 2 numbers") ->addArgument('a', InputArgument::REQUIRED, 'First number') ->addArgument('b', InputArgument::REQUIRED, 'Two number'); } protected function execute (InputInterface $input, OutputInterface $output) { $a = $input->getArgument('a'); $b = $input->getArgument('b'); $s = $a + $b; $output->writeln("$a + $b = $s"); } } // выходим из каталога src $ cd .. // создадим еще один файл для запуска нашей программы(без расширения) и откроем его для редактирования $ touch run $ vi run // добавим в файл следующий код // на первой строке укажем чем запускать данный файл //(берем ссылку на php из настроек) #!/usr/bin/env php <?php require __DIR__.'/vendor/autoload.php'; use Symfony\Component\Console\Application; use TrubinE\SumCommand; $app = new Application("Welcome from console", "v1.0.0"); $app->add(new SumCommand()); $app->run(); // откроем файл composer.json и настроим работу с namespace $ vi composer.json // добавим следующий код "autoload": {"psr-4": {"TrubinE\\": "src"}} // обновил файл автозагрузки $ composer install // для того что бы запускать наше приложение как и другие команды linux следующим образом: ./run // нужно установить следующие права $ chmod +x run // проверяем работу приложения (нужно находиться в директории с файлов run) $ ./run sum 1 2 |
Дополнительно
Для выполнения скрпита как обычной программы в Linux нужно установить права на выполнение(chmod +x file) и добавить Shebang
#!usr/bin/php — укажем что выполняемый файл на php
#!usr/bin/env php — указываем на файл настроек, где есть php переменная с указанием пути на интерпретатор php
Передаваемые переменные (переменные окружения):
getenv(‘MYVAR’); — функция возвращает переменную окружения MYVAR
getopt($shortopts, $longopts); — получаем опции переданные в командной строке(список получаемый опций: $shortopts, $longopts). Например: php example.php -fvalue -h (getopt получит -fvalue -h).
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php // Скрипт example.php $shortopts = ""; $shortopts .= "f:"; // Обязательное значение $shortopts .= "v::"; // Необязательное значение $shortopts .= "abc"; // Эти параметры не принимают никаких значений $longopts = array( "required:", // Обязательное значение "optional::", // Необязательное значение "option", // Нет значения "opt", // Нет значения ); $options = getopt($shortopts, $longopts); var_dump($options); |
var_dump($argv); — $argv содержит все переменные которые мы передали в консоле для нашей команды
Комментарии закрыты!