예제 #1
0
 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);
         }
     }
 }