Ejemplo n.º 1
0
 public static function castXmlReader(\XmlReader $reader, array $a, Stub $stub, $isNested)
 {
     $props = Caster::PREFIX_VIRTUAL . 'parserProperties';
     $info = array('localName' => $reader->localName, 'prefix' => $reader->prefix, 'nodeType' => new ConstStub(self::$nodeTypes[$reader->nodeType], $reader->nodeType), 'depth' => $reader->depth, 'isDefault' => $reader->isDefault, 'isEmptyElement' => \XmlReader::NONE === $reader->nodeType ? null : $reader->isEmptyElement, 'xmlLang' => $reader->xmlLang, 'attributeCount' => $reader->attributeCount, 'value' => $reader->value, 'namespaceURI' => $reader->namespaceURI, 'baseURI' => $reader->baseURI, $props => array('LOADDTD' => $reader->getParserProperty(\XmlReader::LOADDTD), 'DEFAULTATTRS' => $reader->getParserProperty(\XmlReader::DEFAULTATTRS), 'VALIDATE' => $reader->getParserProperty(\XmlReader::VALIDATE), 'SUBST_ENTITIES' => $reader->getParserProperty(\XmlReader::SUBST_ENTITIES)));
     if ($info[$props] = Caster::filter($info[$props], Caster::EXCLUDE_EMPTY, array(), $count)) {
         $info[$props] = new EnumStub($info[$props]);
         $info[$props]->cut = $count;
     }
     $info = Caster::filter($info, Caster::EXCLUDE_EMPTY, array(), $count);
     // +2 because hasValue and hasAttributes are always filtered
     $stub->cut += $count + 2;
     return $a + $info;
 }