Same name and namespace in other branches
  1. 4.6.x includes/xmlrpc.inc \xmlrpc_value_calculate_type()
  2. 4.7.x includes/xmlrpc.inc \xmlrpc_value_calculate_type()
  3. 5.x includes/xmlrpc.inc \xmlrpc_value_calculate_type()
  4. 7.x includes/xmlrpc.inc \xmlrpc_value_calculate_type()

Map PHP type to XML-RPC type.

Parameters

$xmlrpc_value: Variable whose type should be mapped.

Return value

XML-RPC type as string.

See also

http://www.xmlrpc.com/spec#scalars

1 call to xmlrpc_value_calculate_type()
xmlrpc_value in includes/xmlrpc.inc
Recursively turn a data structure into objects with 'data' and 'type' attributes.

File

includes/xmlrpc.inc, line 53
Drupal XML-RPC library. Based on the IXR - The Incutio XML-RPC Library - (c) Incutio Ltd 2002-2005 Version 1.7 (beta) - Simon Willison, 23rd May 2005 Site: http://scripts.incutio.com/xmlrpc/ Manual: http://scripts.incutio.com/xmlrpc/manual.php This…

Code

function xmlrpc_value_calculate_type(&$xmlrpc_value) {

  // http://www.php.net/gettype: Never use gettype() to test for a certain type [...] Instead, use the is_* functions.
  if (is_bool($xmlrpc_value->data)) {
    return 'boolean';
  }
  if (is_double($xmlrpc_value->data)) {
    return 'double';
  }
  if (is_int($xmlrpc_value->data)) {
    return 'int';
  }
  if (is_array($xmlrpc_value->data)) {

    // empty or integer-indexed arrays are 'array', string-indexed arrays 'struct'
    return empty($xmlrpc_value->data) || range(0, count($xmlrpc_value->data) - 1) === array_keys($xmlrpc_value->data) ? 'array' : 'struct';
  }
  if (is_object($xmlrpc_value->data)) {
    if ($xmlrpc_value->data->is_date) {
      return 'date';
    }
    if ($xmlrpc_value->data->is_base64) {
      return 'base64';
    }
    $xmlrpc_value->data = get_object_vars($xmlrpc_value->data);
    return 'struct';
  }

  // default
  return 'string';
}