public function convertParameter($arrMatch)
{
list($strSource, $strQuery) = explode('?', $arrMatch[1], 2);
parse_str($strQuery, $arrArgs);
$arrName = (array) $arrArgs['name'];
$var = $this->getValueFromSource($strSource, array_shift($arrName), $arrArgs);
$index = 0;
$count = count($arrName);
while ($index < $count && is_array($var)) {
$var = $var[$arrName[$index++]];
}
if ($index != $count || $var === null) {
if (array_key_exists('default', $arrArgs) && null !== $arrArgs['default']) {
$this->addParameter($arrArgs['default']);
return '?';
} else {
return 'NULL';
}
}
// Treat as scalar value.
if (!isset($arrArgs['aggregate'])) {
$this->addParameter($var);
return '?';
}
return $this->convertParameterAggregate($var, $arrArgs);
}