Chris@0: filterCallback = $filterCallback; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Get found nodes satisfying the filter callback. Chris@0: * Chris@0: * Nodes are returned in pre-order. Chris@0: * Chris@0: * @return Node[] Found nodes Chris@0: */ Chris@0: public function getFoundNodes() : array { Chris@0: return $this->foundNodes; Chris@0: } Chris@0: Chris@0: public function beforeTraverse(array $nodes) { Chris@0: $this->foundNodes = []; Chris@0: Chris@0: return null; Chris@0: } Chris@0: Chris@0: public function enterNode(Node $node) { Chris@0: $filterCallback = $this->filterCallback; Chris@0: if ($filterCallback($node)) { Chris@0: $this->foundNodes[] = $node; Chris@0: } Chris@0: Chris@0: return null; Chris@0: } Chris@0: }