CChoiceFormat
优质
小牛编辑
134浏览
2023-12-01
所有包 | 方法
CChoiceFormat是一个助手类,可以根据指定的数值来选择一个合适消息。 可选择的信息如以下格式字符串:
例如:指定的messages为‘n==1#one|n==2#two|n>2#others’, 且数值为2,则会生成两个messages。
对于像 ‘n==1’这种表达式,我们可以直接用‘1’来表示, 所以上面的例子可以像这样‘1#one|2#two|n>2#others’。
如果没有指定任何数值的情况下, 最后一个消息将被返回。
源码: framework/i18n/CChoiceFormat.php#71 (显示)
源码: framework/i18n/CChoiceFormat.php#45 (显示)
包 | system.i18n |
---|---|
继承 | class CChoiceFormat |
版本 | $Id: CChoiceFormat.php 3515 2011-12-28 12:29:24Z mdomba $ |
源码 | framework/i18n/CChoiceFormat.php |
'expr1#message1|expr2#message2|expr3#message3'其中的expression应该是一个有效的PHP表达式,‘n’作为唯一的变量。 例如:‘n==1’ and ‘n%10==2 && n>10’,两个都是合法的表达式。 变量‘n’将采取指定数值。 如果expression计算值为true,相应信息将被返回。
例如:指定的messages为‘n==1#one|n==2#two|n>2#others’, 且数值为2,则会生成两个messages。
对于像 ‘n==1’这种表达式,我们可以直接用‘1’来表示, 所以上面的例子可以像这样‘1#one|2#two|n>2#others’。
如果没有指定任何数值的情况下, 最后一个消息将被返回。
公共方法
隐藏继承方法
方法 | 描述 | 定义在 |
---|---|---|
format() | 根据指定数值格式化消息。 | CChoiceFormat |
受保护方法
隐藏继承方法
方法 | 描述 | 定义在 |
---|---|---|
evaluate() | 根据指定数值来计算一个PHP表达式。 | CChoiceFormat |
方法详细
evaluate() 方法protected static boolean evaluate(string $expression, mixed $n) | ||
$expression | string | PHP表达式 |
$n | mixed | 数值 |
{return} | boolean | 返回计算后的结果 |
protectedstaticfunctionevaluate($expression,$n)
{
return@eval("return$expression;");
}
根据指定数值来计算一个PHP表达式。
format() 方法public static string format(string $messages, mixed $number) | ||
$messages | string | 可选择的消息如 ‘expr1#message1|expr2#message2|expr3#message3’. 参见CChoiceFormat更多详细。 |
$number | mixed | 数值 |
{return} | string | 返回选择的信息 |
publicstaticfunctionformat($messages,$number)
{
$n=preg_match_all('/s*([^#]*)s*#([^|]*)|/',$messages.'|',$matches);
if($n===0)
return$messages;
for($i=0;$i<$n;++$i)
{
$expression=$matches[1][$i];
$message=$matches[2][$i];
if($expression===(string)(int)$expression)
{
if($expression==$number)
return$message;
}
elseif(self::evaluate(str_replace('n','$n',$expression),$number))
return$message;
}
return$message;//returnthelastchoice
}
根据指定数值格式化消息。