public toParameter ( mixed $value ) : array | ||
$value | mixed | The value to map. |
return | array |
public function toParameter($value)
{
$pValue = ['value' => $value];
$type = gettype($value);
switch ($type) {
case 'boolean':
$pType['type'] = self::TYPE_BOOL;
break;
case 'integer':
$pType['type'] = self::TYPE_INT64;
break;
case 'double':
$pType['type'] = self::TYPE_FLOAT64;
break;
case 'string':
$pType['type'] = self::TYPE_STRING;
break;
case 'resource':
$pType['type'] = self::TYPE_BYTES;
$pValue['value'] = base64_encode(stream_get_contents($value));
break;
case 'object':
list($pType, $pValue) = $this->objectToParameter($value);
break;
case 'array':
list($pType, $pValue) = $this->isAssoc($value) ? $this->assocArrayToParameter($value) : $this->arrayToParameter($value);
break;
default:
throw new \InvalidArgumentException(sprintf('Unrecognized value type %s. Please ensure you are using the latest version of google/cloud.', $type));
break;
}
return ['parameterType' => $pType, 'parameterValue' => $pValue];
}
/** * Formats query parameters for the API. * * @param array $parameters The parameters to format. * @return array */ private function formatQueryParameters(array $parameters) { $options = ['parameterMode' => $this->isAssoc($parameters) ? 'named' : 'positional', 'useLegacySql' => false]; foreach ($parameters as $name => $value) { $param = $this->mapper->toParameter($value); if ($options['parameterMode'] === 'named') { $param += ['name' => $name]; } $options['queryParameters'][] = $param; } return $options; }