在命令行模式下运行


用于在命令行模式下调用指定的控制器和方法

程序入口

命令行模式下的程序入口与普通程序入口唯一差别在loadApp后, 调用的是cliRun()方法

require __DIR__ . '/../../crossboot.php';
Cross\Core\Delegate::loadApp('cli')->cliRun();

使用方法

在命令行模式下执行, 假设入口文件的名称为cli.php

/usr/local/php/bin/php cli.php "控制器:方法" "参数"

数可以是任何可以解析的格式, 解析参数的工作一般在控制器基类的构造函数中, 假设传入的参数格式为-a=1 -b=2, 处理的方法如下:

namespace app\cli\controllers;

use Cross\MVC\Controller;

/**
 * @Auth: wonli <wonli@live.com>
 * Class Cli
 * @package app\cli\controllers
 */
abstract class Cli extends Controller
{
    function __construct()
    {
        parent::__construct();

        //处理$argv传递过来的参数
        $params = array();
        foreach($this->params as $p) {
            if (strpos($p, '=') === false) {
                continue;
            }

            list($p_key, $p_value) = explode('=', $p);
            if ($p_key && $p_value) {
                $params[trim(trim($p_key, '-'))] = trim($p_value);
            }
        }

        $this->params = $params;
    }
}

命令行模式一般用于计划任务, 也可以用来当工具, 处理一些复杂任务