CChoiceFormat
| Пакет | system.i18n |
|---|---|
| Наследование | класс CChoiceFormat |
| Исходный код | framework/i18n/CChoiceFormat.php |
CChoiceFormat — это вспомогательный класс, который выбирает подходящее сообщение на основе заданного числового значения. Кандидатные сообщения представлены в строчном формате:
Например, при заданных кандидатных сообщениях
Для выражений типа
В случае, если заданное число не соответствует ни одному сообщению, будет возвращено последнее кандидатное сообщение.
PHP выражения будут вычислены с помощью evaluate.
'expr1#message1|expr2#message2|expr3#message3'где каждое выражение должно быть допустимым PHP выражением со
'n' в качестве единственной переменной. Например, 'n==1' и 'n%10==2 && n>10' являются допустимыми выражениями. Переменная 'n' будет принимать заданное числовое значение, и если выражение вычисляет истинное значение, то будет возвращено соответствующее сообщение. Например, при заданных кандидатных сообщениях
'n==1#one|n==2#two|n>2#others' и числовом значении 2, результирующее сообщение будет 'two'. Для выражений типа
'n==1', мы также можем использовать сокращение '1'. Таким образом, приведенные выше примеры кандидатных сообщений можно упростить до '1#one|2#two|n>2#others'. В случае, если заданное число не соответствует ни одному сообщению, будет возвращено последнее кандидатное сообщение.
PHP выражения будут вычислены с помощью evaluate.
Публичные методы
| Метод | Описание | Определено в |
|---|---|---|
| format() | Форматирует сообщение в соответствии с заданным числовым значением. | CChoiceFormat |
Защищенные методы
| Метод | Описание | Определено в |
|---|---|---|
| evaluate() | Вычисляет PHP выражение с заданным числовым значением. | CChoiceFormat |
Подробное описание методов
evaluate() метод
protected static boolean evaluate(string $expression, mixed $n) | ||
| $expression | строка | PHP выражение |
| $n | смешанный тип | числовое значение |
| {возвращаемое значение} | булево значение | результат выражения |
Исходный код: framework/i18n/CChoiceFormat.php#72 (показать)
protected static function evaluate($expression,$n)
{
try
{
return @eval("return $expression;");
}
catch (ParseError $e)
{
return false;
}
}
Вычисляет PHP выражение с заданным числовым значением.
format() метод
public static string format(string $messages, mixed $number) | ||
| $messages | строка | кандидатные сообщения в формате 'expr1#message1|expr2#message2|expr3#message3'. Подробнее см. CChoiceFormat. |
| $number | смешанный тип | числовое значение |
| {возвращаемое значение} | строка | выбранное сообщение |
Исходный код: framework/i18n/CChoiceFormat.php#46 (показать)
public static function format($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; // return the last choice
}
Форматирует сообщение в соответствии с заданным числовым значением.
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CChoiceFormat