Class yii\helpers\BaseConsole
继承 | yii\helpers\BaseConsole |
---|---|
子类 | yii\helpers\Console |
可用版本自 | 2.0 |
源码 | https://github.com/yiichina/yii2/blob/api/framework/helpers/BaseConsole.php |
BaseConsole 为 yii\helpers\Console 提供了具体的实现方法。
不要使用 BaseConsole 类。使用 yii\helpers\Console 类代替。
公共方法
常量
常量 | 值 | 描述 | 被定义在 |
---|---|---|---|
BG_BLACK | 40 | yii\helpers\BaseConsole | |
BG_BLUE | 44 | yii\helpers\BaseConsole | |
BG_CYAN | 46 | yii\helpers\BaseConsole | |
BG_GREEN | 42 | yii\helpers\BaseConsole | |
BG_GREY | 47 | yii\helpers\BaseConsole | |
BG_PURPLE | 45 | yii\helpers\BaseConsole | |
BG_RED | 41 | yii\helpers\BaseConsole | |
BG_YELLOW | 43 | yii\helpers\BaseConsole | |
BLINK | 5 | yii\helpers\BaseConsole | |
BOLD | 1 | yii\helpers\BaseConsole | |
CONCEALED | 8 | yii\helpers\BaseConsole | |
CROSSED_OUT | 9 | yii\helpers\BaseConsole | |
ENCIRCLED | 52 | yii\helpers\BaseConsole | |
FG_BLACK | 30 | yii\helpers\BaseConsole | |
FG_BLUE | 34 | yii\helpers\BaseConsole | |
FG_CYAN | 36 | yii\helpers\BaseConsole | |
FG_GREEN | 32 | yii\helpers\BaseConsole | |
FG_GREY | 37 | yii\helpers\BaseConsole | |
FG_PURPLE | 35 | yii\helpers\BaseConsole | |
FG_RED | 31 | yii\helpers\BaseConsole | |
FG_YELLOW | 33 | yii\helpers\BaseConsole | |
FRAMED | 51 | yii\helpers\BaseConsole | |
ITALIC | 3 | yii\helpers\BaseConsole | |
NEGATIVE | 7 | yii\helpers\BaseConsole | |
NORMAL | 0 | yii\helpers\BaseConsole | |
OVERLINED | 53 | yii\helpers\BaseConsole | |
RESET | 0 | yii\helpers\BaseConsole | |
UNDERLINE | 4 | yii\helpers\BaseConsole |
方法详情
将返回一个使用给定 ANSI 样式格式化的字符串。
public static string ansiFormat($string, $format = []) | ||
$string | string | 要格式化的字符串 |
$format | array | 包含格式化值的数组。
您可以传递任何 |
返回 ANSI 格式代码。
public static string ansiFormatCode($format) | ||
$format | array | 包含格式化值的数组。
您可以传递任何 |
return | string | ANSI 格式代码根据给定的格式化常量进行格式化。 |
---|
返回没有 ANSI 颜色代码的字符串长度。
public static integer ansiStrlen($string) | ||
$string | string | 计算长度的字符串 |
return | integer | 不包括 ANSI 格式字符的字符串长度 |
---|
将 ANSI 格式的字符串转换为 HTML。
Note: 目前不支持 xTerm 256 位颜色。
public static string ansiToHtml($string, $styleMap = []) | ||
$string | string | 要转换的字符串。 |
$styleMap | array | ANSI 控件代码的可选映射,
如 FG_COLOR 或者 BOLD 去设置一组 CSS 样式的定义。
CSS 样式的定义被描述为一个数组,
其中数组键对应 CSS 样式属性名称,且值为 CSS 值。
当渲染的时候如果值是数组将使用 |
return | string | ANSI 格式字符串的 HTML 表示 |
---|
public static void beginAnsiFormat($format) | ||
$format | array | 包含格式化值的数组。
您可以传递任何 |
清除行,光标当前是通过发送 ANSI 控制代码 EL 带有参数 2 到终端。 不会改变光标位置。
public static void clearLine() |
通过将参数为 0 的 ANSI 控制代码 EL 发送到终端,将文本从光标位置清除到行尾。 不会改变光标位置。
public static void clearLineAfterCursor() |
通过向终端发送带有变量 1 的 ANSI 控制码 EL,将文本从光标位置清除到行的开始位置。 不会改变光标位置。
public static void clearLineBeforeCursor() |
通过发送参数带有 2 的 ANSI 控制代码 ED 到终端来清除整个屏幕内容。 不会改变光标位置。 Note: ANSI.SYS 能够实现在 windows 中将坐标位置重置到屏幕左上角。
public static void clearScreen() |
通过发送参数带有 0 的 ANSI 控制代码 ED 发送到终端,将文本从光标清除到屏幕末端。 不会改变光标位置。
public static void clearScreenAfterCursor() |
通过发送参数带有 1 的 ANSI 控制代码 ED 发送到终端,将文本从光标处清除到屏幕的开头。 不会改变光标位置。
public static void clearScreenBeforeCursor() |
请用户输入 y 或 n 进行确认。
一个典型的用法如下:
if (Console::confirm("Are you sure?")) {
echo "user typed yes\n";
} else {
echo "user typed no\n";
}
public static boolean confirm($message, $default = false) | ||
$message | string | 在等待用户输入之前打印出来 |
$default | boolean | 如果没有选择,将返回他的值。 |
return | boolean | 用户是否确认 |
---|
重置之前方法 beginAnsiFormat() 设置的任何 ANSI 格式。 在此之后的任何输出都将具有默认的文本格式。 这等于调用。
echo Console::ansiFormatCode([Console::RESET])
public static void endAnsiFormat() |
public static void endProgress($remove = false, $keepPrefix = true) | ||
$remove | string|boolean | 它可能是 |
$keepPrefix | boolean | 当进度条开始移除时是否保留指定的前缀。 默认设置为 true。 |
打印文本到 STDERR 并附加回车信息(PHP_EOL)。
public static integer|boolean error($string = null) | ||
$string | string | 打印的字符串 |
return | integer|boolean | 发生错误时将打印字节数或者返回 false。 |
---|
生成验证错误的摘要。
public static string errorSummary($models, $options = []) | ||
$models | yii\base\Model|yii\base\Model[] | 这个模型将显示验证错误的信息。 |
$options | array | 标签选项的键-值对。以下是特殊处理的选项:
|
return | string | The generated error summary |
---|
当字符串被解析时如果包含转义符 % 则它们不会通过 renderColoredString() 解释为颜色代码。
public static string escape($string) | ||
$string | string | 转义字符串 |
返回终端屏幕大小。
使用如下:
list($width, $height) = ConsoleHelper::getScreenSize();
public static array|boolean getScreenSize($refresh = false) | ||
$refresh | boolean | 是否强制检查而不是重用缓存的大小值。 这有助于在应用程序运行时检测窗口大小的变化, 但可能无法在每个终端上获得最新的值。 |
return | array|boolean | 当无法确定数组中的值($width,$height)或者返回 false。 |
---|
通过向终端发送 ANSI DECTCEM 代码 ?25l 来隐藏光标。 使用 showCursor() 将它带回来。 应用程序退出时不要忘记显示光标。退出后光标可能会隐藏在终端中。
public static void hideCursor() |
请求用户输入。当用户键入回车时结束(PHP_EOL)。 可选,它还提供了一个提示。
public static string input($prompt = null) | ||
$prompt | string | 等待输入之前显示提示(可选) |
return | string | 用户的输入 |
---|
如果控制台在 windows 上运行,则返回 true。
public static boolean isRunningOnWindows() |
通过应用一些 ANSI 格式,将 Markdown 转换为在控制台环境中更好的可读性。
public static string markdownToAnsi($markdown) | ||
$markdown | string | Markdown 的字符串。 |
return | string | 解析后的结果为 ANSI 格式化字符串。 |
---|
通过向终端发送 ANSI 控制代码 CUB,将终端光标向后移动。 如果光标已经在屏幕边缘,则不会有任何效果。
public static void moveCursorBackward($steps = 1) | ||
$steps | integer | 光标应向后移动的步数 |
通过向终端发送 ANSI 控制代码 CUD 将终端光标向下移动。 如果光标已经在屏幕边缘,则不会有任何效果。
public static void moveCursorDown($rows = 1) | ||
$rows | integer | 光标应向下移动的行数 |
通过向终端发送 ANSI 控制代码 CUF,将终端光标向前移动。 如果光标已经在屏幕边缘,则不会有任何效果。
public static void moveCursorForward($steps = 1) | ||
$steps | integer | 光标应向前移动的步数 |
通过向终端发送 ANSI 控制代码 CNL,将终端光标移动到下一行的开头。
public static void moveCursorNextLine($lines = 1) | ||
$lines | integer | 光标应向下移动的行数 |
通过向终端发送 ANSI 控制代码 CPL,将终端光标移动到前一行的开头。
public static void moveCursorPrevLine($lines = 1) | ||
$lines | integer | 应该向上移动光标的行数 |
通过发送 ANSI 控制码 CUP 或 CHA 到终端,将光标移动到列和行给定的绝对位置。
public static void moveCursorTo($column, $row = null) | ||
$column | integer | 基于 1 的列号,1 是屏幕的左边缘。 |
$row | integer|null | 基于 1 的行号,1 是屏幕的上边缘。如果没有设置,将光标移动到当前行。 |
通过向终端发送 ANSI 控制代码 CUU 将终端光标向上移动。 如果光标已经在屏幕边缘,则不会有任何效果。
public static void moveCursorUp($rows = 1) | ||
$rows | integer | 光标应该向上移动的行数 |
打印带有回车信息的 STDOUT 文本(PHP_EOL)。
public static integer|boolean output($string = null) | ||
$string | string | 打印的字符串 |
return | integer|boolean | 发生错误时将打印字节数或者返回 false。 |
---|
提示用户输入并验证。
public static string prompt($text, $options = []) | ||
$text | string | 提示字符串 |
$options | array | 验证输入的选项:
|
return | string | 用户输入 |
---|
将字符串转换成 ansi 格式,用 ansi 控制代码模式 %y 替换成(黄色)。
与 https://github.com/pear/Console_Color2/blob/master/Console/Color2.php 使用几乎相同的语法 这张转换表如下: (在一些终端上 'bold' 意思是 'light')。它几乎与 irssi 使用的转换表相同。
text text background
------------------------------------------------
%k %K %0 black dark grey black
%r %R %1 red bold red red
%g %G %2 green bold green green
%y %Y %3 yellow bold yellow yellow
%b %B %4 blue bold blue blue
%m %M %5 magenta bold magenta magenta
%p %P magenta (think: purple)
%c %C %6 cyan bold cyan cyan
%w %W %7 white bold white white
%F Blinking, Flashing
%U Underline
%8 Reverse
%_,%9 Bold
%n Resets the color
%% A single %
第一个参数是要转换的字符串,
第二个参数是可选的标志是否需要使用颜色。它默认设置为 true,如果设置为 false,
颜色代码将被移除(并且 %% 将被改变为 %)
public static string renderColoredString($string, $colored = true) | ||
$string | string | 转换的字符串 |
$colored | boolean | 是否应该为字符串设定颜色? |
通过将 ANSI 控制代码 RCP 发送到终端,恢复 saveCursorPosition() 保存的光标位置。
public static void restoreCursorPosition() |
将 ANSI 控制代码 SCP 发送到终端,保存当前光标位置。 可以使用 restoreCursorPosition() 恢复位置。
public static void saveCursorPosition() |
通过向终端发送 ANSI 控制码 SD,向下滚动整个页面。 在顶部添加新行。ANSI 不支持这种方法。windows 中使用的 SYS。
public static void scrollDown($lines = 1) | ||
$lines | integer | 向下滚动的行数 |
通过向终端发送 ANSI 控制码 SU,将整个页面向上滚动。 在底部添加了新行。ANSI 不支持这种方法。windows 中使用的 SYS。
public static void scrollUp($lines = 1) | ||
$lines | integer | 向上滚动的行数 |
给用户一个选项进行选择。 输入 '?' 则给出可供选择的选项及其选项列表对应的说明解释。
public static string select($prompt, $options = []) | ||
$prompt | string | 提示消息 |
$options | array | 从键值数组中进行选项的选择。 输入和使用的是什么键,值是通过帮助命令显示给最终用户的内容。 |
return | string | 用户选择的选项字符 |
---|
当光标被 hideCursor() 隐藏时,将通过发送 ANSI DECTCEM 代码 ?25h 再次显示光标。
public static void showCursor() |
开始在屏幕上显示进度条。
这进度条将被 updateProgress() 进行更新并且通过 endProgress() 进行结束。
下面的示例显示了进度条的简单用法:
Console::startProgress(0, 1000);
for ($n = 1; $n <= 1000; $n++) {
usleep(1000);
Console::updateProgress($n, 1000);
}
Console::endProgress();
像 Git 克隆一样进步(只显示状态信息):
Console::startProgress(0, 1000, 'Counting objects: ', false);
for ($n = 1; $n <= 1000; $n++) {
usleep(1000);
Console::updateProgress($n, 1000);
}
Console::endProgress("done." . PHP_EOL);
参见:
public static void startProgress($done, $total, $prefix = '', $width = null) | ||
$done | integer | 已完成项的数量 |
$total | integer | 需要完成的项目的总数量 |
$prefix | string | 在进度条之前显示的可选字符串。 默认为空字符串,因此不显示前缀。 |
$width | integer|boolean | 可选的进度条宽度。 可以通过整数来表示进度条显示的字符或者可以使用 0 到 1 之间的浮点数百分比来表示。 也可以将其设置为 false 以禁用只显示进度信息,比如百分比,总数量以及预估到达时间。 如果不设置,横条将和屏幕一样宽。屏幕大小将使用 getScreenSize() 来检测。 |
将字符串打印到 STDERR。
public static integer|boolean stderr($string) | ||
$string | string | 要打印的字符串 |
return | integer|boolean | 发生错误时将打印字节数或者返回 false |
---|
从 STDIN 获取输入,并为 EOL 返回右侧被截取后的字符串
public static string stdin($raw = false) | ||
$raw | boolean | 如果设置 true,返回的字符串不进行删除 |
return | string | 从 stdin 读取的字符串 |
---|
打印字符串到 STDOUT。
public static integer|boolean stdout($string) | ||
$string | string | 将要打印的字符串 |
return | integer|boolean | 发生错误时将打印字节数或者返回 false |
---|
如果流支持彩色化则返回 true。如果流不支持则 ANSI 颜色被禁用。
- 不含 ansicon 窗口
- 非 tty 控制台
public static boolean streamSupportsAnsiColors($stream) | ||
$stream | mixed | |
return | boolean | 如果流支持 ANSI 颜色返回 true,否则返回 false。 |
---|
从字符串中剥离 ANSI 控制代码
public static string stripAnsiFormat($string) | ||
$string | string | 匹配替换的字符串 |
public static void updateProgress($done, $total, $prefix = null) | ||
$done | integer | 完成的项的数量。 |
$total | integer | 需要完成的项目的总数量 |
$prefix | string | 在进度条之前显示的可选字符串。 默认是 null 表示由 startProgress() 指定将被使用的前缀。 如果指定前缀,它将更新以后调用将使用的前缀。 |
自动缩进以适合屏幕大小
如果无法检测到屏幕大小,或者缩进大于屏幕尺寸,则文本不会被换行。
第一行将被 not 定义,因此 Console::wrapText("Lorem ipsum dolor sit amet.", 4)
会产生以下输出,给定屏幕宽度为 16 个字符:
Lorem ipsum
dolor sit
amet.
public static string wrapText($text, $indent = 0, $refresh = false) | ||
$text | string | 将要被覆盖的字符串 |
$indent | integer | 用于缩进的空格数。 |
$refresh | boolean | 是否强制刷新屏幕大小。 这个将被传递给 getScreenSize()。 |
return | string | 被覆盖的字符串。 |
---|
返回 xterm 背景颜色的 ansi 格式代码。
您可以将它的返回值传递给一个格式化方法: ansiFormat(),ansiFormatCode(),beginAnsiFormat()。
参见 http://en.wikipedia.org/wiki/Talk:ANSI_escape_code#xterm-256colors.
public static string xtermBgColor($colorCode) | ||
$colorCode | integer | Xterm 颜色代码 |
返回 xterm 前景颜色的 ansi 格式代码。
您可以将这个函数的返回值传递给以下格式方法之一: ansiFormat(),ansiFormatCode(),beginAnsiFormat()。
参见 http://en.wikipedia.org/wiki/Talk:ANSI_escape_code#xterm-256colors.
public static string xtermFgColor($colorCode) | ||
$colorCode | integer | Xterm 颜色代码 |