termCallback = $termCallback; } public function visitConcept(DOMElement $element) { array_push($this->path, Helper::conceptPathSegment($element)); } public function visitTerm(DOMElement $element) { $raw_value = $element->getAttribute(self::TERM_VALUE_ATTR); $object = Term::parse($raw_value); $term = [ 'raw_value' => $raw_value, 'value' => $object->getValue(), 'context' => $object->getContext(), 'path' => $this->getCurrentPathAsString(), 'lang' => $element->getAttribute(self::TERM_LANG_ATTR), 'id' => $element->getAttribute(self::TERM_ID_ATTR) ]; call_user_func($this->termCallback, $term); } public function leaveConcept(DOMElement $element) { array_pop($this->path); } private function getCurrentPathAsString() { return sprintf('/%s', implode('/', $this->path)); } }