提示
本教程相关代码托管在Gitee:gitee.com/toshcn/micr…
在根目录创建console目录
console用作存放命令行应用代码目录
cd micro-hau
mkdir console
console目录结构如下:
console/
- config // 命令行应用配置存放目录
- .gitignore // Git配置文件
- bootstrap.php // 命令行应用预配置文件
- main.php // 命令行应用主配置文件
- main-local.php // 命令行应用本地环境配置文件
- params.php // 命令行应用主参数配置文件
- params-local.php // 命令行应用本地环境参数配置文件
- controllers // 命令行应用控制器代码存放目录
- migrations // 命令行应用数据库迁移代码存放目录
- runtime // 命令行应用运行目录
设置根别名
在common/config目录下的bootstrap.php文件,在文件追加如下内容:
<?php
Yii::setAlias('@common', dirname(__DIR__));
Yii::setAlias('@api', dirname(dirname(__DIR__)) . '/api');
Yii::setAlias('@console', dirname(dirname(__DIR__)) . '/console'); // 追加的内容
创建main.php主配置文件
在console/config目录下,创建main.php文件,在文件内添加如下内容:
<?php
/**
* @link https://gitee.com/toshcn/micro-hau
* @copyright Copyright (c) 2022/4/15 micro-hau
* @author toshcn <toshcn@foxmail.com>
*/
// 合并参数
$params = array_merge(
require __DIR__ . '/../../common/config/params.php',
require __DIR__ . '/../../common/config/params-local.php',
require __DIR__ . '/params.php',
require __DIR__ . '/params-local.php'
);
return [
'id' => 'micro_hau_console', // 设置应用ID
'basePath' => dirname(__DIR__), // console应用根目录
'bootstrap' => ['log'], // 引导前就加载日志组件
'controllerNamespace' => 'console\controllers', // 配置console应用的控制器命名空间
'controllerMap' => [ // 控制器类对应表
'fixture' => [ // 测试夹具类
'class' => 'yii\console\controllers\FixtureController',
'namespace' => 'common\fixtures',
],
],
// 配置公共组件
'components' => [
// 日志组件
'log' => [
'traceLevel' => YII_DEBUG ? 3 : 0,
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
],
],
],
'params' => $params
];
创建main-local.php本地配置文件
在console/config目录下,创建main-local.php文件,在文件内添加如下内容:
<?php
return [
];
创建params.php公共参数文件
在console/config目录下,创建params.php文件,在文件内添加如下内容:
<?php
return [
];
创建params-local.php本地环境参数文件
在console/config目录下,创建params-locall.php文件,在文件内添加如下内容:
<?php
return [
];
创建yii命令行应用入口脚本
在项目根目录micro-hau下,创建yii文件,在文件内添加如下内容:
#!/usr/bin/env php
<?php
/**
* 命令行应用入口脚本. 第一行 #!/usr/bin/env php 声明为php脚本
*/
// 是否开启debug模式
defined('YII_DEBUG') or define('YII_DEBUG', true);
// 设置环境常量
defined('YII_ENV') or define('YII_ENV', 'dev');
// 加载composer第三方引导文件
require __DIR__ . '/vendor/autoload.php';
// 引入Yii框架
require __DIR__ . '/vendor/yiisoft/yii2/Yii.php';
// 公共应用里的引导配置 主要初始化 根别名
require __DIR__ . '/common/config/bootstrap.php';
// 当前命令行应用的引导配置
require __DIR__ . '/console/config/bootstrap.php';
$config = yii\helpers\ArrayHelper::merge(
require __DIR__ . '/common/config/main.php',
require __DIR__ . '/common/config/main-local.php',
require __DIR__ . '/console/config/main.php',
require __DIR__ . '/console/config/main-local.php'
);
$application = new yii\console\Application($config);
$exitCode = $application->run();
exit($exitCode);
创建命令行应用控制器
在console/controllers目录下,创建IniController.php文件,在文件内添加如下内容:
<?php
/**
* @link https://gitee.com/toshcn/micro-hau
* @copyright Copyright (c) 2022/4/15 micro-hau
* @author toshcn <toshcn@foxmail.com>
*/
namespace console\controllers;
use yii\console\Controller;
use yii\console\ExitCode;
/**
* Class IniController
* @package console\controllers
*/
class IniController extends Controller
{
/**
* Test action is IniController test function.
* @return int
*/
public function actionTest()
{
echo "Begin init !\n";
sleep(1);
echo "End init !\n";
return ExitCode::OK;
}
}
现在打开命令终端 运行php yii init/test
在项目根目录下,运行效果如下:
$ php yii init/test
Begin init !
End init !
控制台命令用法
你可以使用以下语法来执行控制台控制器动作:
yii <route> [--option1=value1 --option2=value2 ... argument1 argument2 ...]
<route> 指的是控制器动作的路由。option选项将填充控制器类属性, argument参数是动作方法的参数