Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F6010903
NodeFinder.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
NodeFinder.php
View Options
<?php
declare
(
strict_types
=
1
);
namespace
PhpParser
;
use
PhpParser\NodeVisitor\FindingVisitor
;
use
PhpParser\NodeVisitor\FirstFindingVisitor
;
class
NodeFinder
{
/**
* Find all nodes satisfying a filter callback.
*
* @param Node|Node[] $nodes Single node or array of nodes to search in
* @param callable $filter Filter callback: function(Node $node) : bool
*
* @return Node[] Found nodes satisfying the filter callback
*/
public
function
find
(
$nodes
,
callable
$filter
)
:
array
{
if
(!
is_array
(
$nodes
))
{
$nodes
=
[
$nodes
];
}
$visitor
=
new
FindingVisitor
(
$filter
);
$traverser
=
new
NodeTraverser
;
$traverser
->
addVisitor
(
$visitor
);
$traverser
->
traverse
(
$nodes
);
return
$visitor
->
getFoundNodes
();
}
/**
* Find all nodes that are instances of a certain class.
*
* @param Node|Node[] $nodes Single node or array of nodes to search in
* @param string $class Class name
*
* @return Node[] Found nodes (all instances of $class)
*/
public
function
findInstanceOf
(
$nodes
,
string
$class
)
:
array
{
return
$this
->
find
(
$nodes
,
function
(
$node
)
use
(
$class
)
{
return
$node
instanceof
$class
;
});
}
/**
* Find first node satisfying a filter callback.
*
* @param Node|Node[] $nodes Single node or array of nodes to search in
* @param callable $filter Filter callback: function(Node $node) : bool
*
* @return null|Node Found node (or null if none found)
*/
public
function
findFirst
(
$nodes
,
callable
$filter
)
{
if
(!
is_array
(
$nodes
))
{
$nodes
=
[
$nodes
];
}
$visitor
=
new
FirstFindingVisitor
(
$filter
);
$traverser
=
new
NodeTraverser
;
$traverser
->
addVisitor
(
$visitor
);
$traverser
->
traverse
(
$nodes
);
return
$visitor
->
getFoundNode
();
}
/**
* Find first node that is an instance of a certain class.
*
* @param Node|Node[] $nodes Single node or array of nodes to search in
* @param string $class Class name
*
* @return null|Node Found node, which is an instance of $class (or null if none found)
*/
public
function
findFirstInstanceOf
(
$nodes
,
string
$class
)
{
return
$this
->
findFirst
(
$nodes
,
function
(
$node
)
use
(
$class
)
{
return
$node
instanceof
$class
;
});
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Oct 4 2026, 09:49 (6 w, 9 h ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
7a/87/94903125b47c14cd1178e98d267e
Default Alt Text
NodeFinder.php (2 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment