CPropertyValue


system.utils
继承 class CPropertyValue
源自 1.0
版本 $Id: CPropertyValue.php 2799 2011-01-01 19:31:13Z qiang.xue $
源码
CPropertyValue是一个助手类,它提供了一系列静态方法以转换组件的属性值为指定的类型。

CPropertyValue通常用于组件的setter方法,以确保 设置的属性值为指定的类型。 例如,一个布尔型的属性setter方法类似下面这样:
public function setPropertyName($value)
{
    $value=CPropertyValue::ensureBoolean($value);
    // $value 是一个新的布尔值类型变量
}


属性可以是下列类型,以及相应的类型转换规则:
  • string: 一个布尔值,需要转换为'true' 或 'false'。
  • boolean: 字符串 'true' (大小写敏感) 将转换为true, 字符串 'false' (大小写敏感) 将转换为false。
  • integer
  • float
  • array: 以'('开始并且以')'结束的字符串将被认为是一个数组 并被计算。否则,一个以该字符串为值 的数组将被返回。
  • object
  • enum: 枚举类型,通过一个字符串数组进行限定。

公共方法

方法 描述 定义在
ensureArray() 将一个值转换为数组型。如果此值是一个字符串并且形如 CPropertyValue
ensureBoolean() 将一个值转换为布尔型。 CPropertyValue
ensureEnum() 将一个值转换为枚举型。 CPropertyValue
ensureFloat() 将一个值转换为浮点数型。 CPropertyValue
ensureInteger() 将一个值转换为整数型。 CPropertyValue
ensureObject() 将一个值转换为对象类型。 CPropertyValue
ensureString() 将一个值转换为字符串型。 CPropertyValue

方法详细

ensureArray() 方法
public static array ensureArray(mixed $value)
$value mixed 需要转换的值
{return} array
public static function ensureArray($value)
{
    if(
is_string($value))
    {
        
$value trim($value);
        
$len strlen($value);
        if (
$len >= && $value[0] == '(' && $value[$len-1] == ')')
        {
            eval(
'$array=array'.$value.';');
            return 
$array;
        }
        else
            return 
$len>0?array($value):array();
    }
    else
        return (array)
$value;
}

将一个值转换为数组型。如果此值是一个字符串并且形如 (a,b,c) 那么将返回一个数组,此数组由给定字符串中的 元素组成。如果此值是一个字符串并且它的形式与上不同, 那么一个只包含了此字符串的数组将被返回。如果此值不是 一个字符串那么将直接以PHP数组转换并返回。

ensureBoolean() 方法
public static boolean ensureBoolean(mixed $value)
$value mixed 需要转换的值。
{return} boolean
public static function ensureBoolean($value)
{
    if (
is_string($value))
        return !
strcasecmp($value,'true') || $value!=0;
    else
        return (boolean)
$value;
}

将一个值转换为布尔型。 注意:字符串“true”(大小写敏感)将被转换为true, 字符串“true”(大小写敏感)将被转换为false。 如果一个字符串表示了一个非零数字,它将被视为true。

ensureEnum() 方法
public static string ensureEnum(string $value, string $enumType)
$value string 需要验证为枚举的值
$enumType string 枚举类的名字(确保它在调用此方法前已经被导入)。
{return} string 有效的枚举值
public static function ensureEnum($value,$enumType)
{
    static 
$types=array();
    if(!isset(
$types[$enumType]))
        
$types[$enumType]=new ReflectionClass($enumType);
    if(
$types[$enumType]->hasConstant($value))
        return 
$value;
    else
        throw new 
CException(Yii::t('yii','Invalid enumerable value "{value}". Please make sure it is among ({enum}).',
            array(
'{value}'=>$value'{enum}'=>implode(', ',$types[$enumType]->getConstants()))));
}

将一个值转换为枚举型。

此方法验证此值是否为指定的枚举类型。 一个合法的枚举值是在指定的枚举类型(类) 中定义的常量名。 参见CEnumerable以了解更多关于枚举的细节。

ensureFloat() 方法
public static float ensureFloat(mixed $value)
$value mixed 需要转换的值。
{return} float
public static function ensureFloat($value)
{
    return (float)
$value;
}

将一个值转换为浮点数型。

ensureInteger() 方法
public static integer ensureInteger(mixed $value)
$value mixed 需要转换的值。
{return} integer
public static function ensureInteger($value)
{
    return (integer)
$value;
}

将一个值转换为整数型。

ensureObject() 方法
public static object ensureObject(mixed $value)
$value mixed 需要转换的值。
{return} object
public static function ensureObject($value)
{
    return (object)
$value;
}

将一个值转换为对象类型。

ensureString() 方法
public static string ensureString(mixed $value)
$value mixed 需要转换的值。
{return} string
public static function ensureString($value)
{
    if (
is_bool($value))
        return 
$value?'true':'false';
    else
        return (string)
$value;
}

将一个值转换为字符串型。 注意:一个值为true的布尔值将被转换为“true”, 值为false的布尔值将被转换为“false”。