Skip to content

Commit 7b00257

Browse files
committed
Add stuff
1 parent 32bd5cf commit 7b00257

File tree

3 files changed

+47
-4
lines changed

3 files changed

+47
-4
lines changed

stubs/dom.stub

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,11 @@ class DOMDocument extends DOMNode
2929

3030
class DOMNode
3131
{
32-
/** @var DOMNamedNodeMap<DOMAttr>|null */
33-
public readonly ?DOMNamedNodeMap $attributes;
32+
/**
33+
* @readonly
34+
* @var DOMNamedNodeMap<DOMAttr>|null
35+
*/
36+
public $attributes;
3437
}
3538

3639
class DOMElement extends DOMNode
@@ -150,6 +153,24 @@ class DOMProcessingInstruction extends DOMNode
150153
class DOMNamedNodeMap implements Traversable, IteratorAggregate, Countable
151154
{
152155

156+
/**
157+
* @return (TNode | null)
158+
*/
159+
public function getNamedItem(string $qualifiedName)
160+
{
161+
}
162+
/**
163+
* @return (TNode | null)
164+
*/
165+
public function getNamedItemNS(?string $namespace, string $localName)
166+
{
167+
}
168+
/**
169+
* @return (TNode | null)
170+
*/
171+
public function item(int $index)
172+
{
173+
}
153174
}
154175

155176
class DOMText extends DOMCharacterData
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
3+
declare(strict_types = 1);
4+
5+
namespace DOMLegacyNamedNodeMap;
6+
7+
use DOMAttr;
8+
use DOMNode;
9+
use DOMNamedNodeMap;
10+
use function PHPStan\Testing\assertType;
11+
12+
class Foo
13+
{
14+
public function checkAttributes(DOMNode $node): void {
15+
assertType('DOMNamedNodeMap<DOMAttr>', $node->attributes);
16+
if ($node->hasAttribute('attr')) {
17+
assertType('DOMAttr', $node->attributes->getNamedItem('attr'));
18+
} else {
19+
assertType('null', $node->attributes->getNamedItem('attr'));
20+
}
21+
}
22+
}

tests/PHPStan/Rules/Properties/data/dom-legacy-ext-template-nodes.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
use function PHPStan\Testing\assertType;
44

5-
function (\DOMNode $node): void {
5+
function basic_node(\DOMNode $node): void {
66
assertType(DOMNamedNodeMap::class . '<' . DOMAttr::class . '>', $node->attributes);
77
};
88

9-
function parse(\DOMElement $node): void
9+
function element_node(\DOMElement $node): void
1010
{
1111
assertType(DOMNamedNodeMap::class . '<' . DOMAttr::class . '>', $node->attributes);
1212
$attribute = $node->attributes->getNamedItem('class');

0 commit comments

Comments
 (0)