Skip to content

Commit 293896a

Browse files
committed
Declare dynamic properties in ext/dom
1 parent 87b263d commit 293896a

8 files changed

+790
-53
lines changed

ext/dom/php_dom.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -421,7 +421,7 @@ static HashTable* dom_get_debug_info_helper(zend_object *object, int *is_temp) /
421421
zend_string_addref(object_str);
422422
}
423423

424-
zend_hash_add(debug_info, string_key, &value);
424+
zend_hash_str_update(debug_info, ZSTR_VAL(string_key), ZSTR_LEN(string_key), &value);
425425
} ZEND_HASH_FOREACH_END();
426426

427427
zend_string_release_ex(object_str, 0);

ext/dom/php_dom.stub.php

Lines changed: 188 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,17 @@
44

55
class DOMDocumentType extends DOMNode
66
{
7+
public string $name;
8+
9+
public DOMNamedNodeMap $entities;
10+
11+
public DOMNamedNodeMap $notations;
12+
13+
public string $publicId;
14+
15+
public string $systemId;
16+
17+
public ?string $internalSubset;
718
}
819

920
class DOMCdataSection extends DOMText
@@ -41,6 +52,41 @@ public function replaceWith(...$nodes): void;
4152

4253
class DOMNode
4354
{
55+
public string $nodeName;
56+
57+
/** @var string|null */
58+
public $nodeValue;
59+
60+
public int $nodeType;
61+
62+
public ?DOMNode $parentNode;
63+
64+
public DOMNodeList $childNodes;
65+
66+
public ?DOMNode $firstChild;
67+
68+
public ?DOMNode $lastChild;
69+
70+
public ?DOMNode $previousSibling;
71+
72+
public ?DOMNode $nextSibling;
73+
74+
public ?DOMNamedNodeMap $attributes;
75+
76+
public ?DOMDocument $ownerDocument;
77+
78+
public ?string $namespaceURI;
79+
80+
/** @var string */
81+
public $prefix = "";
82+
83+
public ?string $localName;
84+
85+
public ?string $baseURI;
86+
87+
/** @var string */
88+
public $textContent = "";
89+
4490
/** @return DOMNode|false */
4591
public function appendChild(DOMNode $node) {}
4692

@@ -95,6 +141,21 @@ public function replaceChild(DOMNode $node, DOMNode $child) {}
95141

96142
class DOMNameSpaceNode
97143
{
144+
public string $nodeName;
145+
146+
public ?string $nodeValue;
147+
148+
public int $nodeType;
149+
150+
public string $prefix;
151+
152+
public ?string $localName;
153+
154+
public ?string $namespaceURI;
155+
156+
public ?DOMDocument $ownerDocument;
157+
158+
public ?DOMNode $parentNode;
98159
}
99160

100161
class DOMImplementation
@@ -114,6 +175,12 @@ public function createDocument(?string $namespace = null, string $qualifiedName
114175

115176
class DOMDocumentFragment extends DOMNode implements DOMParentNode
116177
{
178+
public ?DOMElement $firstElementChild;
179+
180+
public ?DOMElement $lastElementChild;
181+
182+
public int $childElementCount;
183+
117184
public function __construct() {}
118185

119186
/** @return bool */
@@ -128,6 +195,8 @@ public function prepend(...$nodes): void {}
128195

129196
class DOMNodeList implements IteratorAggregate, Countable
130197
{
198+
public int $length;
199+
131200
/** @return int|false */
132201
public function count() {}
133202

@@ -139,6 +208,14 @@ public function item(int $index) {}
139208

140209
class DOMCharacterData extends DOMNode implements DOMChildNode
141210
{
211+
public string $data;
212+
213+
public int $length;
214+
215+
public ?DOMElement $previousElementSibling;
216+
217+
public ?DOMElement $nextElementSibling;
218+
142219
/** @return bool */
143220
public function appendData(string $data) {}
144221

@@ -168,6 +245,16 @@ public function after(...$nodes): void {}
168245

169246
class DOMAttr extends DOMNode
170247
{
248+
public string $name;
249+
250+
public bool $specified = true;
251+
252+
public string $value;
253+
254+
public ?DOMElement $ownerElement;
255+
256+
public mixed $schemaTypeInfo = null;
257+
171258
public function __construct(string $name, string $value = "") {}
172259

173260
/** @return bool */
@@ -176,6 +263,20 @@ public function isId() {}
176263

177264
class DOMElement extends DOMNode implements DOMParentNode, DOMChildNode
178265
{
266+
public string $tagName;
267+
268+
public mixed $schemaTypeInfo = null;
269+
270+
public ?DOMElement $firstElementChild;
271+
272+
public ?DOMElement $lastElementChild;
273+
274+
public int $childElementCount;
275+
276+
public ?DOMElement $previousElementSibling;
277+
278+
public ?DOMElement $nextElementSibling;
279+
179280
public function __construct(string $qualifiedName, ?string $value = null, string $namespace = "") {}
180281

181282
/** @return string */
@@ -252,6 +353,65 @@ public function prepend(...$nodes): void {}
252353

253354
class DOMDocument extends DOMNode implements DOMParentNode
254355
{
356+
public ?DOMDocumentType $doctype;
357+
358+
public DOMImplementation $implementation;
359+
360+
public ?DOMElement $documentElement;
361+
362+
/** @deprecated */
363+
public ?string $actualEncoding;
364+
365+
/** @var string|null */
366+
public $encoding;
367+
368+
public ?string $xmlEncoding;
369+
370+
/** @var bool */
371+
public $standalone = false;
372+
373+
/** @var bool */
374+
public $xmlStandalone = false;
375+
376+
/** @var string|null */
377+
public $version;
378+
379+
/** @var string|null */
380+
public $xmlVersion;
381+
382+
/** @var bool */
383+
public $strictErrorChecking = false;
384+
385+
/** @var string|null */
386+
public $documentURI;
387+
388+
/** @deprecated */
389+
public mixed $config = null;
390+
391+
/** @var bool */
392+
public $formatOutput = false;
393+
394+
/** @var bool */
395+
public $validateOnParse = false;
396+
397+
/** @var bool */
398+
public $resolveExternals = false;
399+
400+
/** @var bool */
401+
public $preserveWhiteSpace = false;
402+
403+
/** @var bool */
404+
public $recover = false;
405+
406+
/** @var bool */
407+
public $substituteEntities = false;
408+
409+
public ?DOMElement $firstElementChild;
410+
411+
public ?DOMElement $lastElementChild;
412+
413+
public int $childElementCount;
414+
255415
public function __construct(string $version = "1.0", string $encoding = "") {}
256416

257417
/** @return DOMAttr|false */
@@ -366,6 +526,8 @@ final class DOMException extends Exception
366526

367527
class DOMText extends DOMCharacterData
368528
{
529+
public string $wholeText;
530+
369531
public function __construct(string $data = "") {}
370532

371533
/** @return bool */
@@ -383,6 +545,8 @@ public function splitText(int $offset) {}
383545

384546
class DOMNamedNodeMap implements IteratorAggregate, Countable
385547
{
548+
public int $length;
549+
386550
/** @return DOMNode|null */
387551
public function getNamedItem(string $qualifiedName) {}
388552

@@ -400,6 +564,17 @@ public function getIterator(): Iterator {}
400564

401565
class DOMEntity extends DOMNode
402566
{
567+
public ?string $publicId;
568+
569+
public ?string $systemId;
570+
571+
public ?string $notationName;
572+
573+
public mixed $actualEncoding = null;
574+
575+
public mixed $encoding = null;
576+
577+
public mixed $version = null;
403578
}
404579

405580
class DOMEntityReference extends DOMNode
@@ -409,16 +584,29 @@ public function __construct(string $name) {}
409584

410585
class DOMNotation extends DOMNode
411586
{
587+
public string $publicId;
588+
589+
public string $systemId;
412590
}
413591

414592
class DOMProcessingInstruction extends DOMNode
415593
{
594+
public string $target;
595+
596+
/** @var string */
597+
public $data = "";
598+
416599
public function __construct(string $name, string $value = "") {}
417600
}
418601

419602
#ifdef LIBXML_XPATH_ENABLED
420603
class DOMXPath
421604
{
605+
public DOMDocument $document;
606+
607+
/** @var bool */
608+
public $registerNodeNamespaces = false;
609+
422610
public function __construct(DOMDocument $document, bool $registerNodeNS = true) {}
423611

424612
/** @return mixed */

0 commit comments

Comments
 (0)