/** * @param Concept $concept * @return Arc[] */ public function getArcsFromConcept(Concept $concept) { if (is_null($this->arcCache)) { $this->arcCache = array(); foreach ($this->getArcs() as $arc) { /** @var $fromConcept NamespaceId */ foreach ($arc->getFromConcepts() as $fromConcept) { if (!isset($this->arcCache[$fromConcept->namespace])) { $this->arcCache[$fromConcept->namespace] = array(); } if (!isset($this->arcCache[$fromConcept->namespace][$fromConcept->id])) { $this->arcCache[$fromConcept->namespace][$fromConcept->id] = array(); } $this->arcCache[$fromConcept->namespace][$fromConcept->id][] = $arc; } } } $namespaceArcCache = $this->arcCache[$concept->getNamespace()]; if ($namespaceArcCache) { return $namespaceArcCache[$concept->getId()]; } return null; }