abstract class XML_RPC2_Backend_Php_Value_Scalar extends XML_RPC2_Backend_Php_Value
{
// {{{ properties
/**
* scalar type
*
* @var string
*/
private $_scalarType = null;
// }}}
// {{{ setScalarType()
/**
* scalarType property setter
*
* @param mixed value The new scalarType
*/
protected function setScalarType($value)
{
switch ($value) {
case 'int':
case 'i4':
case 'boolean':
case 'string':
case 'double':
case 'dateTime.iso8601':
case 'base64':
$this->_scalarType = $value;
break;
default:
throw new XML_RPC2_InvalidTypeException(sprintf('Type \'%s\' is not an XML-RPC scalar type', $value));
}
}
// }}}
// {{{ getScalarType()
/**
* scalarType property getter
*
* @return mixed The current scalarType
*/
public function getScalarType()
{
return $this->_scalarType;
}
// }}}
// {{{ constructor
/**
* Constructor. Will build a new XML_RPC2_Value_Scalar with the given nativeValue
*
* @param mixed nativeValue
*/
public function __construct($scalarType, $nativeValue)
{
$this->setScalarType($scalarType);
$this->setNativeValue($nativeValue);
}
// }}}
// {{{ createFromNative()
/**
* Choose a XML_RPC2_Value subclass appropriate for the
* given value and create it.
*
* @param string The native value
* @param string Optinally, the scalar type to use
* @throws XML_RPC2_InvalidTypeEncodeException When native value's type is not a native type
* @return XML_RPC2_Value The newly created value
*/
public static function createFromNative($nativeValue, $explicitType = null)
{
if (is_null($explicitType)) {
switch (gettype($nativeValue)) {
case 'boolean':
case 'integer':
case 'double':
case 'string':
$explicitType = gettype($nativeValue);
break;
default:
throw new XML_RPC2_InvalidTypeEncodeException(sprintf('Impossible to encode scalar value \'%s\' from type \'%s\'. Native type is not a scalar XML_RPC type (boolean, integer, double, string)',