private function tryParsingProperties(\SimpleXMLElement $doc, PhpClass $class) { foreach ($doc->xpath('//search:fieldsynopsis') as $fieldElem) { $type = (string) $fieldElem->type; $name = (string) $fieldElem->varname; $modifiers = array(); foreach ($fieldElem->modifier as $modifierElem) { $modifiers[] = (string) $modifierElem; } if (in_array('const', $modifiers, true)) { if (false !== strpos($name, '::')) { list(, $name) = explode('::', $name); } $constant = new PhpConstant($name); $class->setConstant($constant); $constant->setAttribute('type', $type); $initializer = $fieldElem->initializer; settype($initializer, $type); $constant->setValue($initializer); } else { $visibility = array_intersect(array('public', 'protected', 'private'), $modifiers); if (!$visibility) { $visibility = array('public'); } $property = new \CG\Generator\PhpProperty($name); $property->setVisibility(reset($visibility)); if ('' !== $type) { $property->setAttribute('type', $type); } $class->setProperty($property); $this->typeRefiner->refinePropertyType($class, $property); } } }