支付宝扫一扫付款
微信扫一扫付款
(微信为保护隐私,不显示你的昵称)
格式助手(format helpers)所提供的方法,用于配合颜色来格式化output。相对于 如何对命令行进行彩色和样式输出 中提到的,使用这个helper你可以做更多高端事情。
FormatterHelper
已包含在默认的助手集中,你可以调用 getHelperSet()
来得到它:
1 | $formatter = $this->getHelper('formatter'); |
该方法返回的是一个字符串,通常你要把它传入 OutputInterface::writeln
方法以完成对控制台的渲染。
在输出属于某些“区段(section)”的信息时,Symfony提供了已定义好的样式(style)。它在区段中使用颜色并用括号括起来,真实的message则在其右侧。不带颜色的话是下面这样:
1 | [SomeSection] Here is some message related to that section |
要复制这种样式,你应该使用 formatSection()
方法:
1 2 3 4 5 | $formattedLine = $formatter->formatSection(
'SomeSection',
'Here is some message related to that section'
);
$output->writeln($formattedLine); |
有时你希望在整段文本之内去输出“带有背景色”的信息。在输出错误信息时Symfony已经在这么用。
如果你中手动输出一行以上的错误消息,你会注意到背景只和每个单独的行一样长。使用 formatBlock()
来生成块状输出:
1 2 3 | $errorMessages = array('Error!', 'Something went wrong');
$formattedBlock = $formatter->formatBlock($errorMessages, 'error');
$output->writeln($formattedBlock); |
你已看到,把一个“消息数组”传入 formatBlock()
方法即可创建想要的output。如果你把 true
作为第三个参数,文字块将格式化为更大的padding (文字块儿的顶部和底部留一个空行,左右各是2个空格)。
在块儿内使用何种确切的 "style" 取决于你。本例中,你使用的是预定义的 error
样式,但是还有其他样式,或者你可以创建自己的。参考 如何对命令行进行彩色和样式输出。
3.1
truncate
方法自Symfony 3.1起被引入。
有时你想要输出一个被显式截取了指定字符长度的message。这可以用 truncate()
方法来实现:
1 2 3 | $message = "This is a very long message, which should be truncated";
$truncatedMessage = $formatter->truncate($message, 7);
$output->writeln($truncatedMessage); |
1 | This is... |
消息被截断为给定的彻底,后缀被加在结果字符串的尾部。
如果长度是负值,就从字符串的结尾开始截起:
1 | $truncatedMessage = $formatter->truncate($message, -5); |
这会导致:
1 | This is a very long message, which should be trun... |
默认时使用的是 ...
后缀。如果你希望使用一个不同的后缀,直接把它传入方法的第三个参数。后缀永远被附加上,直到截取的长度大过了消息和后缀之总长度。如果你完全不想使用后缀,只需传入空串即可:
1 2 3 4 5 6 | $truncatedMessage = $formatter->truncate($message, 7, '!!'); // result: This is!!
$truncatedMessage = $formatter->truncate($message, 7, ''); // result: This is
$truncatedMessage = $formatter->truncate('test', 10));
/* result: test
because length of the "test..." string is shorter than 10
这是因为 "test..." 字符串的长度小于10 */ |
本文,包括例程代码在内,采用的是 Creative Commons BY-SA 3.0 创作共用授权。