/** * @param array $parameters * * @return ViewReference[]|\SimpleXMLElement[] */ public function getReferencesByParameters($parameters, $transform = true, $keepChildren = false) { $viewsReferences = []; /** @var \SimpleXmlElement[] $xmlReferences */ if ($xmlReferences = $this->driver->readCache()->xpath(ViewReferenceHelper::buildXpath($parameters))) { foreach ($xmlReferences as $reference) { if ($transform === true) { $transformViewReferenceFn = function ($parentViewReference) use(&$transformViewReferenceFn, $keepChildren) { $transformer = ViewReferenceXmlCacheRepository::findTransformerFromXmlElement($parentViewReference); $reference = $transformer->transform($parentViewReference); if ($keepChildren) { foreach ($parentViewReference->children() as $child) { $reference->addChild($transformViewReferenceFn($child)); } } return $reference; }; $reference = $transformViewReferenceFn($reference); } $viewsReferences[] = $reference; } } return $viewsReferences; }