annotate vendor/symfony/var-dumper/Caster/DOMCaster.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 129ea1e6d783
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 /*
Chris@0 4 * This file is part of the Symfony package.
Chris@0 5 *
Chris@0 6 * (c) Fabien Potencier <fabien@symfony.com>
Chris@0 7 *
Chris@0 8 * For the full copyright and license information, please view the LICENSE
Chris@0 9 * file that was distributed with this source code.
Chris@0 10 */
Chris@0 11
Chris@0 12 namespace Symfony\Component\VarDumper\Caster;
Chris@0 13
Chris@0 14 use Symfony\Component\VarDumper\Cloner\Stub;
Chris@0 15
Chris@0 16 /**
Chris@0 17 * Casts DOM related classes to array representation.
Chris@0 18 *
Chris@0 19 * @author Nicolas Grekas <p@tchwork.com>
Chris@0 20 */
Chris@0 21 class DOMCaster
Chris@0 22 {
Chris@17 23 private static $errorCodes = [
Chris@0 24 DOM_PHP_ERR => 'DOM_PHP_ERR',
Chris@0 25 DOM_INDEX_SIZE_ERR => 'DOM_INDEX_SIZE_ERR',
Chris@0 26 DOMSTRING_SIZE_ERR => 'DOMSTRING_SIZE_ERR',
Chris@0 27 DOM_HIERARCHY_REQUEST_ERR => 'DOM_HIERARCHY_REQUEST_ERR',
Chris@0 28 DOM_WRONG_DOCUMENT_ERR => 'DOM_WRONG_DOCUMENT_ERR',
Chris@0 29 DOM_INVALID_CHARACTER_ERR => 'DOM_INVALID_CHARACTER_ERR',
Chris@0 30 DOM_NO_DATA_ALLOWED_ERR => 'DOM_NO_DATA_ALLOWED_ERR',
Chris@0 31 DOM_NO_MODIFICATION_ALLOWED_ERR => 'DOM_NO_MODIFICATION_ALLOWED_ERR',
Chris@0 32 DOM_NOT_FOUND_ERR => 'DOM_NOT_FOUND_ERR',
Chris@0 33 DOM_NOT_SUPPORTED_ERR => 'DOM_NOT_SUPPORTED_ERR',
Chris@0 34 DOM_INUSE_ATTRIBUTE_ERR => 'DOM_INUSE_ATTRIBUTE_ERR',
Chris@0 35 DOM_INVALID_STATE_ERR => 'DOM_INVALID_STATE_ERR',
Chris@0 36 DOM_SYNTAX_ERR => 'DOM_SYNTAX_ERR',
Chris@0 37 DOM_INVALID_MODIFICATION_ERR => 'DOM_INVALID_MODIFICATION_ERR',
Chris@0 38 DOM_NAMESPACE_ERR => 'DOM_NAMESPACE_ERR',
Chris@0 39 DOM_INVALID_ACCESS_ERR => 'DOM_INVALID_ACCESS_ERR',
Chris@0 40 DOM_VALIDATION_ERR => 'DOM_VALIDATION_ERR',
Chris@17 41 ];
Chris@0 42
Chris@17 43 private static $nodeTypes = [
Chris@0 44 XML_ELEMENT_NODE => 'XML_ELEMENT_NODE',
Chris@0 45 XML_ATTRIBUTE_NODE => 'XML_ATTRIBUTE_NODE',
Chris@0 46 XML_TEXT_NODE => 'XML_TEXT_NODE',
Chris@0 47 XML_CDATA_SECTION_NODE => 'XML_CDATA_SECTION_NODE',
Chris@0 48 XML_ENTITY_REF_NODE => 'XML_ENTITY_REF_NODE',
Chris@0 49 XML_ENTITY_NODE => 'XML_ENTITY_NODE',
Chris@0 50 XML_PI_NODE => 'XML_PI_NODE',
Chris@0 51 XML_COMMENT_NODE => 'XML_COMMENT_NODE',
Chris@0 52 XML_DOCUMENT_NODE => 'XML_DOCUMENT_NODE',
Chris@0 53 XML_DOCUMENT_TYPE_NODE => 'XML_DOCUMENT_TYPE_NODE',
Chris@0 54 XML_DOCUMENT_FRAG_NODE => 'XML_DOCUMENT_FRAG_NODE',
Chris@0 55 XML_NOTATION_NODE => 'XML_NOTATION_NODE',
Chris@0 56 XML_HTML_DOCUMENT_NODE => 'XML_HTML_DOCUMENT_NODE',
Chris@0 57 XML_DTD_NODE => 'XML_DTD_NODE',
Chris@0 58 XML_ELEMENT_DECL_NODE => 'XML_ELEMENT_DECL_NODE',
Chris@0 59 XML_ATTRIBUTE_DECL_NODE => 'XML_ATTRIBUTE_DECL_NODE',
Chris@0 60 XML_ENTITY_DECL_NODE => 'XML_ENTITY_DECL_NODE',
Chris@0 61 XML_NAMESPACE_DECL_NODE => 'XML_NAMESPACE_DECL_NODE',
Chris@17 62 ];
Chris@0 63
Chris@0 64 public static function castException(\DOMException $e, array $a, Stub $stub, $isNested)
Chris@0 65 {
Chris@0 66 $k = Caster::PREFIX_PROTECTED.'code';
Chris@0 67 if (isset($a[$k], self::$errorCodes[$a[$k]])) {
Chris@0 68 $a[$k] = new ConstStub(self::$errorCodes[$a[$k]], $a[$k]);
Chris@0 69 }
Chris@0 70
Chris@0 71 return $a;
Chris@0 72 }
Chris@0 73
Chris@0 74 public static function castLength($dom, array $a, Stub $stub, $isNested)
Chris@0 75 {
Chris@17 76 $a += [
Chris@0 77 'length' => $dom->length,
Chris@17 78 ];
Chris@0 79
Chris@0 80 return $a;
Chris@0 81 }
Chris@0 82
Chris@0 83 public static function castImplementation($dom, array $a, Stub $stub, $isNested)
Chris@0 84 {
Chris@17 85 $a += [
Chris@0 86 Caster::PREFIX_VIRTUAL.'Core' => '1.0',
Chris@0 87 Caster::PREFIX_VIRTUAL.'XML' => '2.0',
Chris@17 88 ];
Chris@0 89
Chris@0 90 return $a;
Chris@0 91 }
Chris@0 92
Chris@0 93 public static function castNode(\DOMNode $dom, array $a, Stub $stub, $isNested)
Chris@0 94 {
Chris@17 95 $a += [
Chris@0 96 'nodeName' => $dom->nodeName,
Chris@0 97 'nodeValue' => new CutStub($dom->nodeValue),
Chris@0 98 'nodeType' => new ConstStub(self::$nodeTypes[$dom->nodeType], $dom->nodeType),
Chris@0 99 'parentNode' => new CutStub($dom->parentNode),
Chris@0 100 'childNodes' => $dom->childNodes,
Chris@0 101 'firstChild' => new CutStub($dom->firstChild),
Chris@0 102 'lastChild' => new CutStub($dom->lastChild),
Chris@0 103 'previousSibling' => new CutStub($dom->previousSibling),
Chris@0 104 'nextSibling' => new CutStub($dom->nextSibling),
Chris@0 105 'attributes' => $dom->attributes,
Chris@0 106 'ownerDocument' => new CutStub($dom->ownerDocument),
Chris@0 107 'namespaceURI' => $dom->namespaceURI,
Chris@0 108 'prefix' => $dom->prefix,
Chris@0 109 'localName' => $dom->localName,
Chris@0 110 'baseURI' => $dom->baseURI ? new LinkStub($dom->baseURI) : $dom->baseURI,
Chris@0 111 'textContent' => new CutStub($dom->textContent),
Chris@17 112 ];
Chris@0 113
Chris@0 114 return $a;
Chris@0 115 }
Chris@0 116
Chris@0 117 public static function castNameSpaceNode(\DOMNameSpaceNode $dom, array $a, Stub $stub, $isNested)
Chris@0 118 {
Chris@17 119 $a += [
Chris@0 120 'nodeName' => $dom->nodeName,
Chris@0 121 'nodeValue' => new CutStub($dom->nodeValue),
Chris@0 122 'nodeType' => new ConstStub(self::$nodeTypes[$dom->nodeType], $dom->nodeType),
Chris@0 123 'prefix' => $dom->prefix,
Chris@0 124 'localName' => $dom->localName,
Chris@0 125 'namespaceURI' => $dom->namespaceURI,
Chris@0 126 'ownerDocument' => new CutStub($dom->ownerDocument),
Chris@0 127 'parentNode' => new CutStub($dom->parentNode),
Chris@17 128 ];
Chris@0 129
Chris@0 130 return $a;
Chris@0 131 }
Chris@0 132
Chris@0 133 public static function castDocument(\DOMDocument $dom, array $a, Stub $stub, $isNested, $filter = 0)
Chris@0 134 {
Chris@17 135 $a += [
Chris@0 136 'doctype' => $dom->doctype,
Chris@0 137 'implementation' => $dom->implementation,
Chris@0 138 'documentElement' => new CutStub($dom->documentElement),
Chris@0 139 'actualEncoding' => $dom->actualEncoding,
Chris@0 140 'encoding' => $dom->encoding,
Chris@0 141 'xmlEncoding' => $dom->xmlEncoding,
Chris@0 142 'standalone' => $dom->standalone,
Chris@0 143 'xmlStandalone' => $dom->xmlStandalone,
Chris@0 144 'version' => $dom->version,
Chris@0 145 'xmlVersion' => $dom->xmlVersion,
Chris@0 146 'strictErrorChecking' => $dom->strictErrorChecking,
Chris@0 147 'documentURI' => $dom->documentURI ? new LinkStub($dom->documentURI) : $dom->documentURI,
Chris@0 148 'config' => $dom->config,
Chris@0 149 'formatOutput' => $dom->formatOutput,
Chris@0 150 'validateOnParse' => $dom->validateOnParse,
Chris@0 151 'resolveExternals' => $dom->resolveExternals,
Chris@0 152 'preserveWhiteSpace' => $dom->preserveWhiteSpace,
Chris@0 153 'recover' => $dom->recover,
Chris@0 154 'substituteEntities' => $dom->substituteEntities,
Chris@17 155 ];
Chris@0 156
Chris@0 157 if (!($filter & Caster::EXCLUDE_VERBOSE)) {
Chris@0 158 $formatOutput = $dom->formatOutput;
Chris@0 159 $dom->formatOutput = true;
Chris@17 160 $a += [Caster::PREFIX_VIRTUAL.'xml' => $dom->saveXML()];
Chris@0 161 $dom->formatOutput = $formatOutput;
Chris@0 162 }
Chris@0 163
Chris@0 164 return $a;
Chris@0 165 }
Chris@0 166
Chris@0 167 public static function castCharacterData(\DOMCharacterData $dom, array $a, Stub $stub, $isNested)
Chris@0 168 {
Chris@17 169 $a += [
Chris@0 170 'data' => $dom->data,
Chris@0 171 'length' => $dom->length,
Chris@17 172 ];
Chris@0 173
Chris@0 174 return $a;
Chris@0 175 }
Chris@0 176
Chris@0 177 public static function castAttr(\DOMAttr $dom, array $a, Stub $stub, $isNested)
Chris@0 178 {
Chris@17 179 $a += [
Chris@0 180 'name' => $dom->name,
Chris@0 181 'specified' => $dom->specified,
Chris@0 182 'value' => $dom->value,
Chris@0 183 'ownerElement' => $dom->ownerElement,
Chris@0 184 'schemaTypeInfo' => $dom->schemaTypeInfo,
Chris@17 185 ];
Chris@0 186
Chris@0 187 return $a;
Chris@0 188 }
Chris@0 189
Chris@0 190 public static function castElement(\DOMElement $dom, array $a, Stub $stub, $isNested)
Chris@0 191 {
Chris@17 192 $a += [
Chris@0 193 'tagName' => $dom->tagName,
Chris@0 194 'schemaTypeInfo' => $dom->schemaTypeInfo,
Chris@17 195 ];
Chris@0 196
Chris@0 197 return $a;
Chris@0 198 }
Chris@0 199
Chris@0 200 public static function castText(\DOMText $dom, array $a, Stub $stub, $isNested)
Chris@0 201 {
Chris@17 202 $a += [
Chris@0 203 'wholeText' => $dom->wholeText,
Chris@17 204 ];
Chris@0 205
Chris@0 206 return $a;
Chris@0 207 }
Chris@0 208
Chris@0 209 public static function castTypeinfo(\DOMTypeinfo $dom, array $a, Stub $stub, $isNested)
Chris@0 210 {
Chris@17 211 $a += [
Chris@0 212 'typeName' => $dom->typeName,
Chris@0 213 'typeNamespace' => $dom->typeNamespace,
Chris@17 214 ];
Chris@0 215
Chris@0 216 return $a;
Chris@0 217 }
Chris@0 218
Chris@0 219 public static function castDomError(\DOMDomError $dom, array $a, Stub $stub, $isNested)
Chris@0 220 {
Chris@17 221 $a += [
Chris@0 222 'severity' => $dom->severity,
Chris@0 223 'message' => $dom->message,
Chris@0 224 'type' => $dom->type,
Chris@0 225 'relatedException' => $dom->relatedException,
Chris@0 226 'related_data' => $dom->related_data,
Chris@0 227 'location' => $dom->location,
Chris@17 228 ];
Chris@0 229
Chris@0 230 return $a;
Chris@0 231 }
Chris@0 232
Chris@0 233 public static function castLocator(\DOMLocator $dom, array $a, Stub $stub, $isNested)
Chris@0 234 {
Chris@17 235 $a += [
Chris@0 236 'lineNumber' => $dom->lineNumber,
Chris@0 237 'columnNumber' => $dom->columnNumber,
Chris@0 238 'offset' => $dom->offset,
Chris@0 239 'relatedNode' => $dom->relatedNode,
Chris@0 240 'uri' => $dom->uri ? new LinkStub($dom->uri, $dom->lineNumber) : $dom->uri,
Chris@17 241 ];
Chris@0 242
Chris@0 243 return $a;
Chris@0 244 }
Chris@0 245
Chris@0 246 public static function castDocumentType(\DOMDocumentType $dom, array $a, Stub $stub, $isNested)
Chris@0 247 {
Chris@17 248 $a += [
Chris@0 249 'name' => $dom->name,
Chris@0 250 'entities' => $dom->entities,
Chris@0 251 'notations' => $dom->notations,
Chris@0 252 'publicId' => $dom->publicId,
Chris@0 253 'systemId' => $dom->systemId,
Chris@0 254 'internalSubset' => $dom->internalSubset,
Chris@17 255 ];
Chris@0 256
Chris@0 257 return $a;
Chris@0 258 }
Chris@0 259
Chris@0 260 public static function castNotation(\DOMNotation $dom, array $a, Stub $stub, $isNested)
Chris@0 261 {
Chris@17 262 $a += [
Chris@0 263 'publicId' => $dom->publicId,
Chris@0 264 'systemId' => $dom->systemId,
Chris@17 265 ];
Chris@0 266
Chris@0 267 return $a;
Chris@0 268 }
Chris@0 269
Chris@0 270 public static function castEntity(\DOMEntity $dom, array $a, Stub $stub, $isNested)
Chris@0 271 {
Chris@17 272 $a += [
Chris@0 273 'publicId' => $dom->publicId,
Chris@0 274 'systemId' => $dom->systemId,
Chris@0 275 'notationName' => $dom->notationName,
Chris@0 276 'actualEncoding' => $dom->actualEncoding,
Chris@0 277 'encoding' => $dom->encoding,
Chris@0 278 'version' => $dom->version,
Chris@17 279 ];
Chris@0 280
Chris@0 281 return $a;
Chris@0 282 }
Chris@0 283
Chris@0 284 public static function castProcessingInstruction(\DOMProcessingInstruction $dom, array $a, Stub $stub, $isNested)
Chris@0 285 {
Chris@17 286 $a += [
Chris@0 287 'target' => $dom->target,
Chris@0 288 'data' => $dom->data,
Chris@17 289 ];
Chris@0 290
Chris@0 291 return $a;
Chris@0 292 }
Chris@0 293
Chris@0 294 public static function castXPath(\DOMXPath $dom, array $a, Stub $stub, $isNested)
Chris@0 295 {
Chris@17 296 $a += [
Chris@0 297 'document' => $dom->document,
Chris@17 298 ];
Chris@0 299
Chris@0 300 return $a;
Chris@0 301 }
Chris@0 302 }