public function constructUrl($serviceID, $serviceParam, $getItems, $encodeAmpersand, $encodeGetItems)
{
if ($this->_customUrl) {
if (!(is_array($getItems) || $getItems instanceof \Traversable)) {
$getItems = array();
}
$key = $serviceID . ':' . $serviceParam;
$wildCardKey = ($pos = strrpos($serviceParam, '.')) !== false ? $serviceID . ':' . substr($serviceParam, 0, $pos) . '.*' : $serviceID . ':*';
if (isset($this->_constructRules[$key])) {
foreach ($this->_constructRules[$key] as $rule) {
if ($rule->supportCustomUrl($getItems)) {
return $rule->constructUrl($getItems, $encodeAmpersand, $encodeGetItems);
}
}
} elseif (isset($this->_constructRules[$wildCardKey])) {
foreach ($this->_constructRules[$wildCardKey] as $rule) {
if ($rule->supportCustomUrl($getItems)) {
$getItems['*'] = $pos ? substr($serviceParam, $pos + 1) : $serviceParam;
return $rule->constructUrl($getItems, $encodeAmpersand, $encodeGetItems);
}
}
}
}
return parent::constructUrl($serviceID, $serviceParam, $getItems, $encodeAmpersand, $encodeGetItems);
}