protected function parseParam($droot)
{
$param = self::$defaultParam;
foreach ($droot as $element) {
$class = $element->attributes()->class;
$xml = $element->asXML();
if ($element->getName() == 'code') {
// Strip CDATA
$xml = preg_replace('/<!\\[CDATA\\[(.*)\\]\\]>/', '$1', $xml);
}
$text = strip_tags($xml);
if ($class == 'type') {
$param['type'] = $text;
} elseif ($class == 'parameter') {
$param['name'] = $text;
} elseif ($class == 'parameter reference') {
$param['name'] = $text;
$param['reference'] = true;
} elseif ($class == 'initializer') {
$param['optional'] = true;
// FIXME: has default-value isn't meanning be optional
$param['initializer'] = $text;
} else {
throw new \Exception('Unknown param defination class <' . $class . '>');
}
}
return $param;
}