Рубрики
Без рубрики

Как построить легкий командный бегун для CLI, используя PHP

Чтобы бороться с потраченным временем, задача бегунов выполняют задачи, предоставленные автоматическими процессами. И с PHP, строительство вашей собственной задачи бегун становится проще, чем вы думаете.

Автор оригинала: Patrick.

Поскольку большинство программистов знают, существует большое количество задач, которые необходимо завершено. Для борьбы с потраченным временем есть ряд популярных задач бегунов. Заданные бегуны делают только что: выполнить задачу, которая была предоставлена. Два популярных задач бегунов – Гульп и Грунт Отказ Со временем, сохраненным путем автоматизации некоторых процессов, является огромным преимуществом.

Имея это в виду, давайте напишем наш собственный командный бегун, используя PHP 7. Почему PHP 7? Выполнение сценариев Shell с использованием PHP 7 намного превосходит намного превышения ветвей 5.x.

Шаг 1: Базовый класс

abstract class PHPCommandRunner 
{
    abstract function onUnhandled($command);
    
    public function processArguments($argc, $argv)
    {
        //were there enough args passed from the command line?
        if ($argc <= 1) { 
            echo "Not enough arguments.\n";
            exit(1);
        }
        //get the task name, then calculate the name of the method to call,
        //for example, "onSaveCommand".
        for($i = 1; $i<$argc; $i++) {
        $commandName = $argv[$i];
        $methodName = "on".ucfirst(strtolower($commandName))."Command";

        //if the method exists in the class implementation, call it, otherwise
        //it's unhandled.
        if (method_exists(Static::class, $methodName)) {
            call_user_func_array(array(Static::class, $methodName), ['name'=>$commandName, 'runner'=>$this]);
        } else {
            $this->onUnhandled($commandName);  //valid command name, but no handler specified.
        }
        }
    }
    
    public function run($argc, $argv)
    {
    $argv = $this->processArguments($argc, $argv);
    print_r($argv);
    }

}

Это оно! Теперь все, что нам нужно сделать, это написать класс, который расширяет базу Phptaskrunner Класс, и добавьте некоторые методы обработчика команд:

Шаг 2: Реализация

class MyCommandRunner extends PHPCommandRunner 
{
    public function onUnhandled($command)
    {
        echo "No handler defined for command '$command`.\n";
        return true;
    }

    //handle the "hello" command
    public function onHelloCommand($args)
    {
        echo "Hello, world!\n";
        return true;
    }
    
    //handle the "goodbye" command
    public function onGoodbyeCommand($args)
    {
        echo "Goodbye, world!\n";
        return true;
    }
}

Шаг 3: положить его вместе

Demo.php :

run(count($args), $argv);

Наконец, бегите PHP Demo.php Привет до свидания на командной строке. Вы увидите вывод, как:

- Hello, world!
- Goodbye, world!--