"Fossies" - the Fresh Open Source Software Archive

Member "yii-docs-1.1.24.a5ab20/api/CChoiceFormat.html" (7 Jun 2021, 12456 Bytes) of package /linux/www/yii-docs-1.1.24.a5ab20.tar.gz:


Caution: In this restricted "Fossies" environment the current HTML page may not be correctly presentated and may have some non-functional links. You can here alternatively try to browse the pure source code or just view or download the uninterpreted raw source code. If the rendering is insufficient you may try to find and view the page on the project site itself.

Yii Framework v1.1.24 Class Reference

CChoiceFormat

Package system.i18n
Inheritance class CChoiceFormat
Source Code 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.

Public Methods

Hide inherited methods

MethodDescriptionDefined By
format() Formats a message according to the specified number value. CChoiceFormat

Protected Methods

Hide inherited methods

MethodDescriptionDefined By
evaluate() Evaluates a PHP expression with the given number value. CChoiceFormat

Method Details

evaluate() method
protected static boolean evaluate(string $expression, mixed $n)
$expression string the PHP expression
$n mixed the number value
{return} boolean the expression result
Source Code: framework/i18n/CChoiceFormat.php#72 (show)
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() method
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
Source Code: framework/i18n/CChoiceFormat.php#46 (show)
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.

© 2008-2013 by Yii Software LLC
All Rights Reserved.