Yii命令行使用总结
2019-01-19 本文已影响3人
codefine
整理Yii Console
一些用法和问题
- Console Applicaton 配置和运行
- 如何实现接收原始参数?
- 如何实现终端等待输入,输入确认?
在框架根目录,有文件名称为 yii
,可以在命令行模式运行。
#!/usr/bin/env php
<?php
/**
* Yii console bootstrap file.
*
* @link http://www.yiiframework.com/
* @copyright Copyright (c) 2008 Yii Software LLC
* @license http://www.yiiframework.com/license/
*/
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
require(__DIR__ . '/vendor/autoload.php');
require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php');
// 配置文件位置
$config = require(__DIR__ . '/config/console.php');
//console application实例
$application = new yii\console\Application($config);
$exitCode = $application->run();
exit($exitCode);
整理等待输入,输入确认用法。yii\helpers\BaseConsole
是终端的帮助类,处理命令行输入,输出。
namespace app\commands;
use Yii;
class HelloController extends Controller
{
/**
* This command echoes what you have entered as the message.
* @param string $message the message to be echoed.
*/
public function actionIndex($message = 'hello world')
{
//Yii方式接收参数
echo $message . "\n";
try {
var_dump($argv);
} catch (\Exception $e) {
echo $e->getMessage(); //Undefined variable: argv
}
//接收原始命令行参数
global $argv;
var_dump($argv);
//输入提示符
$name = \yii\helpers\BaseConsole::input("输入姓名: ");
$age = \yii\helpers\BaseConsole::prompt("输入年龄: ", ['default' => 20]);
if(!$this->confirm("确定输入正确吗?")) {
exit("退出\n");
}
echo "你输入的姓名是:$name\n";
echo "你输入的年龄是:$age\n";
}
}
终端输出
# 提示输入,确认输入
php yii hello
输入姓名: 小明
输入年龄: [20] 10
确定输入正确吗? (yes|no) [no]:yes
你输入的姓名是:小明
你输入的年龄是:10
# $argv
php yii hello msg
array(2) {
[0]=>
string(3) "yii"
[1]=>
string(5) "hello"
[2]=>
string(3) "msg"
}
...