/** * Chains this atom to an interface as srcAtom * @param string $ifcId * @throws Exception * @return InterfaceObject */ public function ifc($ifcId) { if (is_null($this->parentIfc)) { $ifc = InterfaceObject::getInterface($ifcId); } elseif ($this->parentIfc->isRef()) { $ifc = InterfaceObject::getInterface($ifcId); } else { $ifc = $this->parentIfc->getSubinterface($ifcId); } $clone = clone $ifc; $clone->setSrcAtom($this); return $clone; }