包 | system.utils |
---|---|
继承 | class CPropertyValue |
源自 | 1.0 |
版本 | $Id: CPropertyValue.php 2799 2011-01-01 19:31:13Z qiang.xue $ |
源码 |
CPropertyValue是一个助手类,它提供了一系列静态方法以转换组件的属性值为指定的类型。
CPropertyValue通常用于组件的setter方法,以确保 设置的属性值为指定的类型。 例如,一个布尔型的属性setter方法类似下面这样:
属性可以是下列类型,以及相应的类型转换规则:
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 >= 2 && $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”。