system system.base system.caching system.caching.dependencies system.collections system.console system.db system.db.ar system.db.schema system.db.schema.cubrid system.db.schema.mssql system.db.schema.mysql system.db.schema.oci system.db.schema.pgsql system.db.schema.sqlite system.gii system.i18n system.i18n.gettext system.logging system.test system.utils system.validators system.web system.web.actions system.web.auth system.web.filters system.web.form system.web.helpers system.web.renderers system.web.services system.web.widgets system.web.widgets.captcha system.web.widgets.pagers zii.behaviors zii.widgets zii.widgets.grid zii.widgets.jui

CChoiceFormat

system.i18n
继承 class CChoiceFormat
源码 framework/i18n/CChoiceFormat.php
CChoiceFormat is a helper that chooses an appropriate message based on the specified number value. The candidate messages are given as a string in the following format:
'expr1#message1|expr2#message2|expr3#message3'
where each expression should be a valid PHP expression with 'n' as the only variable. For example, 'n==1' and 'n%10==2 && n>10' are both valid expressions. The variable 'n' will take the given number value, and if an expression evaluates true, the corresponding message will be returned.

For example, given the candidate messages 'n==1#one|n==2#two|n>2#others' and the number value 2, the resulting message will be 'two'.

For expressions like 'n==1', we can also use a shortcut '1'. So the above example candidate messages can be simplified as '1#one|2#two|n>2#others'.

In case the given number doesn't select any message, the last candidate message will be returned.

The PHP expressions will be evaluated using evaluate.

公共方法

隐藏继承的方法

方法描述被定义在
format() Formats a message according to the specified number value. CChoiceFormat

受保护的方法

隐藏继承的方法

方法描述被定义在
evaluate() Evaluates a PHP expression with the given number value. CChoiceFormat

方法详情

evaluate() 方法
protected static boolean evaluate(string $expression, mixed $n)
$expression string the PHP expression
$n mixed the number value
{return} boolean the expression result
源码: framework/i18n/CChoiceFormat.php#72 (显示)
protected static function evaluate($expression,$n)
{
    try
    {
        return @eval(
"return $expression;");
    }
    catch (
ParseError $e)
    {
        return 
false;
    }
}

Evaluates a PHP expression with the given number value.

format() 方法
public static string format(string $messages, mixed $number)
$messages string the candidate messages in the format of 'expr1#message1|expr2#message2|expr3#message3'. See CChoiceFormat for more details.
$number mixed the number value
{return} string the selected message
源码: 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
}

Formats a message according to the specified number value.