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