控制器

Console应用的控制器负责读取请求数据,与模型交换数据。

| 类 |
| --- |
| mix\console\Controller |

初始代码中 Console 应用的控制器在 command 目录。

一个简单的控制器

新建一个文件 IndexController.php , 然后放入以下代码:

<?php

namespace console\crontab\command;

use mix\console\Controller;

class IndexController extends Controller
{

    public function actionIndex()
    {
    	return 'Hello World!';
    }

}

命名空间与文件位置的关系

控制器定义的命名空间为:

namespace console\crontab\command;

因为根命名空间 consolecomposer.json 内定义的路径为 :

"console\\": "console/"

所以控制器的完整路径为:

console/crontab/command/IndexController.php

命令行访问控制器

MixPHP 默认定义了首页与一级目录的默认路由规则,所以上面的控制器可以这样访问:

php <入口文件> index/index

index 指向 IndexController
index 指向 actionIndex 方法

默认控制器

首页控制器就是当URL中没有指定控制器名称时默认访问的控制器,IndexController 为MixPHP的首页控制器。

当访问下面的URL时:

php <入口文件>

默认访问:

console/crontab/command/IndexController.php

默认方法

默认方法就是当URL中没有指定方法名称时默认访问的方法,actionIndex 为MixPHP的默认方法。

当访问下面的URL时:

php <入口文件> index

默认访问:

console/crontab/command/IndexController::actionIndex

如何在控制器内使用参数

执行命令与参数:

// 原始方法
cd /data/www/mixphp/console/crontab/
php mix-crontab order/timeout --start --time-range=30

// 执行完 install.sh 后,可在任意位置这样执行
mix-crontab order/timeout --start --time-range=30

控制器范例代码:

<?php

namespace console\crontab\command;

use mix\console\Controller;

class IndexController extends Controller
{

    // 指定默认值为 false。
    public $start = false;
    
    // 指定默认值
    public $time-range = 10;

    public function actionIndex()
    {
    	if ($this->start) {
        	// ...
        }

        // 看看传递的值
        var_dump($this->start);
        var_dump($this->time-range);
        
    	return 'ok' . PHP_EOL;
    }

}