承接 delz/console 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

delz/console

Composer 安装命令:

composer require delz/console

包简介

delz控制台组件

README 文档

README

参考了Symfony的Console组件

输出样式

  1. 普通输出
    <?php
       use Delz\Console\Output\Stream; 
       
       //引入自动加载
       $loader = require __DIR__ . "/../vendor/autoload.php";
       
       $output = new Stream();
       $output->writeln("Hello world!");
       
  1. 设置前景色、背景色和控制选项

前景色和前景色有:black、red、green、yellow、blue、magenta(紫红色)、cyan(青色)、white、default

控制选项有:bold、underscore、blink(闪)、reverse(反转)、conceal(隐藏)

    <?php
        use Delz\Console\Output\Stream; 
               
        //引入自动加载
        $loader = require __DIR__ . "/../vendor/autoload.php";
               
        $output = new Stream();
        $output->writeln('<fg=black;bg=cyan>Hello world!</>');
        $output->writeln('<fg=black;bg=white;options=bold,underscore>Hello world!</>');
  1. 内置样式

内置了四个info\error\question\comment样式

    <?php
        use Delz\Console\Output\Stream; 
               
        //引入自动加载
        $loader = require __DIR__ . "/../vendor/autoload.php";
        
        $output = new Stream();
               
        $output->writeln("<info>Hello world!</info>");
        $output->writeln("<error>Hello world!</error>");
        $output->writeln("<question>Hello world!</question>");
        $output->writeln("<comment>Hello world!</comment>");
  1. 自定义样式
    <?php
        use Delz\Console\Output\Stream; 
        use Delz\Console\Output\Formatter\Style;
               
        //引入自动加载
        $loader = require __DIR__ . "/../vendor/autoload.php";
        
        $output = new Stream();
               
        $style = new Style();
        $style->setForeground("white");
        $style->setBackground("green");
        $style->setOptions(["bold","blink"]);
        $output->getFormatter()->setStyle('custom', $style);
        $output->writeln("<custom>Hello world!</custom>");

命令和命令容器

  1. 添加命令

命令必须实现ICommand和集成抽象类Command

命令类必须实现execute方法,此方法有两个参数:

IInput $input 输入参数对象,获取参数可以调用方法 $input->getArguments()

IOutput $output 输入对象

下面是Command下的HelloCommand的执行

    <?php
        use Delz\Console\Command\HelloCommand;
        
               
        //引入自动加载
        $loader = require __DIR__ . "/../vendor/autoload.php";
        
        $helloCommand = new HelloCommand();
        $helloCommand->run();

命令可以通过-v等参数获取版本,-h获取帮助信息

命令的写法可参考Command目录下HelloCommand和ListCommand的写法

  1. 命令容器

可以把多条命令加到命令池Pool

    //假设文件名console.php
    <?php
        use Delz\Console\Input\ArgvInput;
        use Delz\Console\Command\HelloCommand;
        use Delz\Console\Command\Pool;
        use Delz\Console\Command\ListCommand;
        
               
        //引入自动加载
        $loader = require __DIR__ . "/../vendor/autoload.php";
        
        $pool = new Pool();
        
        $helloCommand = new HelloCommand();
        $pool->add($helloCommand);
        
        $listCommand = new ListCommand();
        $pool->add($listCommand);
        
        //获取命令行参数
        $input = new ArgvInput();
        $args = $input->getArguments();
        
        //如果没有参数,说明没有任何命令可执行,显示所有命令
        if(count($args)===0) {
            $output->writeln("Command list:");
            foreach ($pool->all() as $k => $v) {
                $output->writeln("<comment>$k</comment>\t" . $v->getDescription());
            }
        } else {
            //第一个参数为命令名称
            $commandName = array_shift($args);
            if(!$pool->has($commandName)) {
                $output->writeln("<error>command " . $commandName . " not exist</error>");
            } else {
                $command = $pool->get($commandName);
                array_unshift($args,$commandName);
                $commandInput = new ArgvInput($args);
                $command->run($commandInput);
            }
        
        }

执行 php console.php 默认会出现命令列表

执行 php console.php hello 会执行HelloCommand,这里HelloCommand的name是hello

执行 php console.php hello -v 会显示HelloCommand命令的版本

统计信息

  • 总下载量: 201
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 2
  • 依赖项目数: 2
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2017-09-19

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固