• yii创建控制台命令


    创建控制台命令程序
    1、控制台命令继承自 yiiconsoleController控制器类
    2、在控制器类中,定义一个或多个动作,动作与控制台子命令相对应
    3、在动作方法中实现业务需求的代码


    运行控制台命令程序
    1、通过执行应用根目录yii脚本执行
    2、脚本命令后跟指定的路由:控制器ID/动作ID

    一个控制台命令demo:

    首先在 console/controllers目录项目创建一个 HelloController.php 文件

    namespace consolecontrollers;
    
    use Yii;
    use yiiconsoleController;
    
    class HelloController extends Controller
    {
        public function actionTest()
        {
            echo "Hello World 
    ";
        }
    }

    如果需要执行,先切换到根目录,然后执行控制台命令

    yii hello/test 即可

     

    带参数的控制台命令程序
    1、控制台命令程序可以接受参数,参数将传递个命令对应的动作方法;
    2、第一个参数对应第一个参数,第二个参数对应第二个参数,依次类推
    3、可以使用数组作为参数,数组参数用逗号隔开字符串生成;
    4、如果没有足够的参数,会提示出错,除非参数设定了默认值。

    namespace consolecontrollers;
    
    use Yii;
    use yiiconsoleController;
    
    class HelloController extends Controller
    {
        /**
         * @purpose 控制台命令传入单个参数
         * @param $name
         */
        public  function  actionWho($name)
        {
            echo "Hello $name 
    ";
        }
    
        /**
         * @purpose 控制台命令传入的参数为数组
         * @param $names
         */
        public function actionAll(array $names)
        {
            var_dump($names);
        }
    }

    1、传入单个参数: yii hello/who daicr 

    2、传入的参数为数组yii hello/all daicr ,gy

    带有选项的控制台命令程序
    1、覆盖在 yiiconsoleController::options() 中的方法,这个方法应该返回控制器类的属性列表
    2、当运行一个命令时,使用语法为:--optionName=optionValue 来传递给对应的属性,值 optionValue警徽分配到optionName属性
    3、自Yii2.0.8之后,可用用 optionAliases() 方法来增加选项别名,从而简化命令中选项的输入

    namespace consolecontrollers;
    
    use Yii;
    use yiiconsoleController;
    
    class HelloController extends Controller
    {
        public $rev = '';           // 定义参数
    
        /**
         * @purpose 覆盖在 yiiconsoleController::options() 中的方法,返回控制器类的属性列表
         * @return array
         */
        public function options()
        {
            return ['rev'];
        }
    
        /**
         * @purpose 增加选项别名(Yii2.0.8之后)
         * @return array
         */
        public function optionAliases()
        {
            return ['r' => 'rev'];
        }
    
        public function actionDemo()
        {
            if($this->rev == 1){
                echo strrev('hello world') . "
    ";
            }else{
                echo "hello world 
    ";
            }
        }
    }

    使用控制台选项: yii hello/demo --r=1

  • 相关阅读:
    Python接口自动化核心模块 数据库操作和日志
    基于数据驱动的接口自动化框架封装
    还在担心漏测吗?快来使用jacoco统计下代码覆盖率
    Mybatisplus 分页查询,总数是如何统计的
    C++ 运算符重载
    C++ 关键字 const
    C++ 拷贝构造
    C++ 之模板
    C++ 引用
    C++ 多态
  • 原文地址:https://www.cnblogs.com/chrdai/p/8612523.html
Copyright © 2020-2023  润新知