Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit f124eb0

Browse files
[VarDumper] Add support for new DOM extension classes in DOMCaster
1 parent 099daf5 commit f124eb0

File tree

4 files changed

+398
-18
lines changed

4 files changed

+398
-18
lines changed

src/Symfony/Component/VarDumper/CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
CHANGELOG
22
=========
33

4+
7.1
5+
---
6+
7+
* Add support for new DOM extension classes in `DOMCaster`
8+
49
7.0
510
---
611

src/Symfony/Component/VarDumper/Caster/DOMCaster.php

Lines changed: 75 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ class DOMCaster
6363
\XML_NAMESPACE_DECL_NODE => 'XML_NAMESPACE_DECL_NODE',
6464
];
6565

66-
public static function castException(\DOMException $e, array $a, Stub $stub, bool $isNested): array
66+
public static function castException(\DOMException|\DOM\Exception $e, array $a, Stub $stub, bool $isNested): array
6767
{
6868
$k = Caster::PREFIX_PROTECTED.'code';
6969
if (isset($a[$k], self::ERROR_CODES[$a[$k]])) {
@@ -82,7 +82,7 @@ public static function castLength($dom, array $a, Stub $stub, bool $isNested): a
8282
return $a;
8383
}
8484

85-
public static function castImplementation(\DOMImplementation $dom, array $a, Stub $stub, bool $isNested): array
85+
public static function castImplementation(\DOMImplementation|\DOM\Implementation $dom, array $a, Stub $stub, bool $isNested): array
8686
{
8787
$a += [
8888
Caster::PREFIX_VIRTUAL.'Core' => '1.0',
@@ -92,7 +92,7 @@ public static function castImplementation(\DOMImplementation $dom, array $a, Stu
9292
return $a;
9393
}
9494

95-
public static function castNode(\DOMNode $dom, array $a, Stub $stub, bool $isNested): array
95+
public static function castNode(\DOMNode|\DOM\Node $dom, array $a, Stub $stub, bool $isNested): array
9696
{
9797
$a += [
9898
'nodeName' => $dom->nodeName,
@@ -104,15 +104,21 @@ public static function castNode(\DOMNode $dom, array $a, Stub $stub, bool $isNes
104104
'lastChild' => new CutStub($dom->lastChild),
105105
'previousSibling' => new CutStub($dom->previousSibling),
106106
'nextSibling' => new CutStub($dom->nextSibling),
107-
'attributes' => $dom->attributes,
108107
'ownerDocument' => new CutStub($dom->ownerDocument),
109-
'namespaceURI' => $dom->namespaceURI,
110-
'prefix' => $dom->prefix,
111-
'localName' => $dom->localName,
112108
'baseURI' => $dom->baseURI ? new LinkStub($dom->baseURI) : $dom->baseURI,
113109
'textContent' => new CutStub($dom->textContent),
114110
];
115111

112+
if ($dom instanceof \DOMNode || $dom instanceof \DOM\Element) {
113+
$a += [
114+
'attributes' => $dom->attributes,
115+
'namespaceURI' => $dom->namespaceURI,
116+
'prefix' => $dom->prefix,
117+
'localName' => $dom->localName,
118+
];
119+
120+
}
121+
116122
return $a;
117123
}
118124

@@ -166,7 +172,48 @@ public static function castDocument(\DOMDocument $dom, array $a, Stub $stub, boo
166172
return $a;
167173
}
168174

169-
public static function castCharacterData(\DOMCharacterData $dom, array $a, Stub $stub, bool $isNested): array
175+
public static function castXMLDocument(\DOM\XMLDocument $dom, array $a, Stub $stub, bool $isNested, int $filter = 0): array
176+
{
177+
$a += [
178+
'doctype' => $dom->doctype,
179+
'implementation' => $dom->implementation,
180+
'documentElement' => new CutStub($dom->documentElement),
181+
'inputEncoding' => $dom->inputEncoding,
182+
'xmlEncoding' => $dom->xmlEncoding,
183+
'xmlStandalone' => $dom->xmlStandalone,
184+
'xmlVersion' => $dom->xmlVersion,
185+
'documentURI' => $dom->documentURI ? new LinkStub($dom->documentURI) : $dom->documentURI,
186+
'formatOutput' => $dom->formatOutput,
187+
];
188+
189+
if (!($filter & Caster::EXCLUDE_VERBOSE)) {
190+
$formatOutput = $dom->formatOutput;
191+
$dom->formatOutput = true;
192+
$a += [Caster::PREFIX_VIRTUAL.'xml' => $dom->saveXML()];
193+
$dom->formatOutput = $formatOutput;
194+
}
195+
196+
return $a;
197+
}
198+
199+
public static function castHTMLDocument(\DOM\HTMLDocument $dom, array $a, Stub $stub, bool $isNested, int $filter = 0): array
200+
{
201+
$a += [
202+
'doctype' => $dom->doctype,
203+
'implementation' => $dom->implementation,
204+
'documentElement' => new CutStub($dom->documentElement),
205+
'inputEncoding' => $dom->inputEncoding,
206+
'documentURI' => $dom->documentURI ? new LinkStub($dom->documentURI) : $dom->documentURI,
207+
];
208+
209+
if (!($filter & Caster::EXCLUDE_VERBOSE)) {
210+
$a += [Caster::PREFIX_VIRTUAL.'html' => $dom->saveHTML()];
211+
}
212+
213+
return $a;
214+
}
215+
216+
public static function castCharacterData(\DOMCharacterData|\DOM\CharacterData $dom, array $a, Stub $stub, bool $isNested): array
170217
{
171218
$a += [
172219
'data' => $dom->data,
@@ -176,30 +223,40 @@ public static function castCharacterData(\DOMCharacterData $dom, array $a, Stub
176223
return $a;
177224
}
178225

179-
public static function castAttr(\DOMAttr $dom, array $a, Stub $stub, bool $isNested): array
226+
public static function castAttr(\DOMAttr|\DOM\Attr $dom, array $a, Stub $stub, bool $isNested): array
180227
{
181228
$a += [
182229
'name' => $dom->name,
183230
'specified' => $dom->specified,
184231
'value' => $dom->value,
185232
'ownerElement' => $dom->ownerElement,
186-
'schemaTypeInfo' => $dom->schemaTypeInfo,
187233
];
188234

235+
if ($dom instanceof \DOMAttr) {
236+
$a += [
237+
'schemaTypeInfo' => $dom->schemaTypeInfo,
238+
];
239+
}
240+
189241
return $a;
190242
}
191243

192-
public static function castElement(\DOMElement $dom, array $a, Stub $stub, bool $isNested): array
244+
public static function castElement(\DOMElement|\DOM\Element $dom, array $a, Stub $stub, bool $isNested): array
193245
{
194246
$a += [
195247
'tagName' => $dom->tagName,
196-
'schemaTypeInfo' => $dom->schemaTypeInfo,
197248
];
198249

250+
if ($dom instanceof \DOMElement) {
251+
$a += [
252+
'schemaTypeInfo' => $dom->schemaTypeInfo,
253+
];
254+
}
255+
199256
return $a;
200257
}
201258

202-
public static function castText(\DOMText $dom, array $a, Stub $stub, bool $isNested): array
259+
public static function castText(\DOMText|\DOM\Text $dom, array $a, Stub $stub, bool $isNested): array
203260
{
204261
$a += [
205262
'wholeText' => $dom->wholeText,
@@ -208,7 +265,7 @@ public static function castText(\DOMText $dom, array $a, Stub $stub, bool $isNes
208265
return $a;
209266
}
210267

211-
public static function castDocumentType(\DOMDocumentType $dom, array $a, Stub $stub, bool $isNested): array
268+
public static function castDocumentType(\DOMDocumentType|\DOM\DocumentType $dom, array $a, Stub $stub, bool $isNested): array
212269
{
213270
$a += [
214271
'name' => $dom->name,
@@ -222,7 +279,7 @@ public static function castDocumentType(\DOMDocumentType $dom, array $a, Stub $s
222279
return $a;
223280
}
224281

225-
public static function castNotation(\DOMNotation $dom, array $a, Stub $stub, bool $isNested): array
282+
public static function castNotation(\DOMNotation|\DOM\Notation $dom, array $a, Stub $stub, bool $isNested): array
226283
{
227284
$a += [
228285
'publicId' => $dom->publicId,
@@ -232,7 +289,7 @@ public static function castNotation(\DOMNotation $dom, array $a, Stub $stub, boo
232289
return $a;
233290
}
234291

235-
public static function castEntity(\DOMEntity $dom, array $a, Stub $stub, bool $isNested): array
292+
public static function castEntity(\DOMEntity|\DOM\Entity $dom, array $a, Stub $stub, bool $isNested): array
236293
{
237294
$a += [
238295
'publicId' => $dom->publicId,
@@ -246,7 +303,7 @@ public static function castEntity(\DOMEntity $dom, array $a, Stub $stub, bool $i
246303
return $a;
247304
}
248305

249-
public static function castProcessingInstruction(\DOMProcessingInstruction $dom, array $a, Stub $stub, bool $isNested): array
306+
public static function castProcessingInstruction(\DOMProcessingInstruction|\DOM\ProcessingInstruction $dom, array $a, Stub $stub, bool $isNested): array
250307
{
251308
$a += [
252309
'target' => $dom->target,
@@ -256,7 +313,7 @@ public static function castProcessingInstruction(\DOMProcessingInstruction $dom,
256313
return $a;
257314
}
258315

259-
public static function castXPath(\DOMXPath $dom, array $a, Stub $stub, bool $isNested): array
316+
public static function castXPath(\DOMXPath|\DOM\XPath $dom, array $a, Stub $stub, bool $isNested): array
260317
{
261318
$a += [
262319
'document' => $dom->document,

src/Symfony/Component/VarDumper/Cloner/AbstractCloner.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,23 +54,38 @@ abstract class AbstractCloner implements ClonerInterface
5454
'Doctrine\Persistence\ObjectManager' => ['Symfony\Component\VarDumper\Caster\StubCaster', 'cutInternals'],
5555

5656
'DOMException' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castException'],
57+
'DOM\Exception' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castException'],
5758
'DOMStringList' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castLength'],
5859
'DOMNameList' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castLength'],
5960
'DOMImplementation' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castImplementation'],
61+
'DOM\Implementation' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castImplementation'],
6062
'DOMImplementationList' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castLength'],
6163
'DOMNode' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castNode'],
64+
'DOM\Node' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castNode'],
6265
'DOMNameSpaceNode' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castNameSpaceNode'],
6366
'DOMDocument' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castDocument'],
67+
'DOM\XMLDocument' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castXMLDocument'],
68+
'DOM\HTMLDocument' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castHTMLDocument'],
6469
'DOMNodeList' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castLength'],
70+
'DOM\NodeList' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castLength'],
6571
'DOMNamedNodeMap' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castLength'],
72+
'DOM\DTDNamedNodeMap' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castLength'],
6673
'DOMCharacterData' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castCharacterData'],
74+
'DOM\CharacterData' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castCharacterData'],
6775
'DOMAttr' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castAttr'],
76+
'DOM\Attr' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castAttr'],
6877
'DOMElement' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castElement'],
78+
'DOM\Element' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castElement'],
6979
'DOMText' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castText'],
80+
'DOM\Text' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castText'],
7081
'DOMDocumentType' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castDocumentType'],
82+
'DOM\DocumentType' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castDocumentType'],
7183
'DOMNotation' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castNotation'],
84+
'DOM\Notation' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castNotation'],
7285
'DOMEntity' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castEntity'],
86+
'DOM\Entity' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castEntity'],
7387
'DOMProcessingInstruction' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castProcessingInstruction'],
88+
'DOM\ProcessingInstruction' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castProcessingInstruction'],
7489
'DOMXPath' => ['Symfony\Component\VarDumper\Caster\DOMCaster', 'castXPath'],
7590

7691
'XMLReader' => ['Symfony\Component\VarDumper\Caster\XmlReaderCaster', 'castXmlReader'],

0 commit comments

Comments
 (0)