感谢你来到这里
我真的很激动
盼望,能有你的支持
捐赠可扫描二维码转账支付
支付宝扫一扫付款
微信扫一扫付款
(微信为保护隐私,不显示你的昵称)
控制台有五个Verbosity Levels(冗长级别),它们被定义在 OutputInterface
:
Value / 值 | Meaning / 含义 | Console option 控制台选项 |
---|---|---|
OutputInterface::VERBOSITY_QUIET |
不要输出任何信息 | -q or --quiet |
OutputInterface::VERBOSITY_NORMAL |
此为默认的冗长级别 | (none) |
OutputInterface::VERBOSITY_VERBOSE |
冗长程度有所增加的信息 | -v |
OutputInterface::VERBOSITY_VERY_VERBOSE |
加大非基本信息数量 | -vv |
OutputInterface::VERBOSITY_DEBUG |
调试信息 | -vvv |
可以在命令行中仅以特定的冗长级别来输出信息。比如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | // ...
class CreateUserCommand extends Command
{
// ...
public function execute(InputInterface $input, OutputInterface $output)
{
$user = new User(...);
$output->writeln(array(
'Username: '.$input->getArgument('username'),
'Password: '.$input->getArgument('password'),
));
// the user class is only printed when the verbose verbosity level is used
// user类仅当使用了vv级别时才会输出
if ($output->getVerbosity() >= OutputInterface::VERBOSITY_VERBOSE) {
$output->writeln('User class: '.get_class($user));
}
// alternatively you can pass the verbosity level to writeln()
// 你也可以把冗长级别传到writeln()中
$output->writeln(
'Will only be printed in verbose mode or higher', // 仅当v级或以上才会输出
OutputInterface::VERBOSITY_VERBOSE
);
}
} |
有若干语义化的方法可用于测试每一个冗长级别:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | if ($output->isQuiet()) {
// ...
}
if ($output->isVerbose()) {
// ...
}
if ($output->isVeryVerbose()) {
// ...
}
if ($output->isDebug()) {
// ...
} |
这些语义化方法(semantic methods)被定义在Symfony 3.0以来的 OutputInterface
接口。之前版本的Symfony中,它们被定义在不同的接口中 (如 Output
),为的是确保向下兼容。
当使用了quiet level(静默级别)时,所有的output将被抑制,因为默认的 write()
方法不返回任何真实输出。
MonologBridge提供了一个 ConsoleHandler
类,允许你在控制台上显示信息。这比你有条件地对output调用进行打包要来得简洁。在Symfony框架中有一个例子,请参考 如何配置Monolog来显示控制台信息。
如果使用了 VERBOSITY_VERBOSE
或以上级别,所有的异常追踪(exception stacktrace)都会被输出。
本文,包括例程代码在内,采用的是 Creative Commons BY-SA 3.0 创作共用授权。