CPropertyValue
| Пакет | system.utils |
|---|---|
| Наследование | класс CPropertyValue |
| С | 1.0 |
| Исходный код | framework/utils/CPropertyValue.php |
CPropertyValue часто используется в методах установки свойств компонентов для обеспечения того, что новое значение свойства имеет нужный тип. Например, метод установки свойства типа boolean будет выглядеть следующим образом,
public function setPropertyName($value)
{
$value=CPropertyValue::ensureBoolean($value);
// $value is now of boolean type
}
Свойства могут иметь следующие типы со своими правилами преобразования:
- строка: значение типа boolean будет преобразовано в 'true' или 'false'.
- boolean: строка 'true' (регистронезависимо) будет преобразована в true, строка 'false' (регистронезависимо) — в false.
- целое число
- число с плавающей точкой
- массив: строка, начинающаяся с '(' и заканчивающаяся ')', будет считаться выражением массива и будет вычислена. В противном случае возвращается массив со значением, которое необходимо гарантировать.
- объект
- перечисление: перечисляемый тип, представленный массивом строк.
Общедоступные методы
| Метод | Описание | Определён в |
|---|---|---|
| ensureArray() | Преобразует значение в тип массив. | CPropertyValue |
| ensureBoolean() | Преобразует значение в тип boolean. | CPropertyValue |
| ensureEnum() | Преобразует значение в тип перечисления. | CPropertyValue |
| ensureFloat() | Преобразует значение в тип с плавающей точкой. | CPropertyValue |
| ensureInteger() | Преобразует значение в тип целого числа. | CPropertyValue |
| ensureObject() | Преобразует значение в тип объект. | CPropertyValue |
| ensureString() | Преобразует значение в тип строки. | CPropertyValue |
Подробное описание методов
ensureArray() метод
public static array ensureArray(mixed $value) | ||
| $value | смешанный | значение, подлежащее преобразованию. |
| {return} | массив | |
public static function ensureArray($value)
{
if(is_string($value))
{
$value = trim($value);
$len = strlen($value);
if ($len >= 2 && $value[0] == '(' && $value[$len-1] == ')')
{
try
{
return eval('return array' . $value . ';');
}
catch (ParseError $e)
{
return array();
}
}
else
return $len>0?array($value):array();
}
else
return (array)$value;
}
Преобразует значение в тип массив.
Если значение — строка и оно имеет вид (a,b,c), то возвращается массив, состоящий из каждого из элементов. Если значение — строка и оно не имеет этого вида, то возвращается массив, состоящий только из строки, если строка пустая — возвращается пустой массив. Если значение не строка, то возвращается массив, содержащий это значение, или то же самое значение, если оно уже является массивом.
ensureBoolean() метод
public static boolean ensureBoolean(mixed $value) | ||
| $value | смешанный | значение, подлежащее преобразованию. |
| {return} | boolean | |
public static function ensureBoolean($value)
{
if (is_string($value))
return !strcasecmp($value,'true') || $value!=0;
else
return (boolean)$value;
}
Преобразует значение в тип boolean. Примечание: строка 'true' (регистронезависимо) преобразуется в true, строка 'false' (регистронезависимо) — в false. Если строка представляет неноль число, оно будет рассматриваться как true.
ensureEnum() метод
public static string ensureEnum(string $value, string $enumType) | ||
| $value | строка | перечисляемое значение для проверки. |
| $enumType | строка | имя класса перечисления (убедитесь, что оно включено перед вызовом этой функции). |
| {return} | строка | валидное значение перечисления |
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 | смешанный | значение, которое необходимо преобразовать. |
| {return} | число с плавающей точкой | |
public static function ensureFloat($value)
{
return (float)$value;
}
Преобразует значение в тип с плавающей точкой.
ensureInteger() метод
public static integer ensureInteger(mixed $value) | ||
| $value | смешанный | значение, которое необходимо преобразовать. |
| {return} | целое число | |
public static function ensureInteger($value)
{
return (integer)$value;
}
Преобразует значение в целочисленный тип.
ensureObject() метод
public static object ensureObject(mixed $value) | ||
| $value | смешанный | значение, которое необходимо преобразовать. |
| {return} | объект | |
public static function ensureObject($value)
{
return (object)$value;
}
Преобразует значение в тип объекта.
ensureString() метод
public static string ensureString(mixed $value) | ||
| $value | смешанный | значение, которое необходимо преобразовать. |
| {return} | строка | |
public static function ensureString($value)
{
if (is_bool($value))
return $value?'true':'false';
else
return (string)$value;
}
Преобразует значение в строковый тип. Примечание: логическое значение будет преобразовано в 'true', если оно истинно, и в 'false', если оно ложно.
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CPropertyValue