public function apply(ObjectContainer $aObjectContainer, IObject &$aTargetObject) { if ($this->nKind == self::filter) { call_user_func_array($this->fnFilter, array($aObjectContainer, $aTargetObject)); } else { $aWeaveinObject = new WeaveinObject($this->aCompiled, $aTargetObject); switch ($this->sType) { case self::insertBefore: $aTargetObject->insertAfterByPosition(0, $aWeaveinObject); break; case self::insertAfter: $aTargetObject->add($aWeaveinObject); break; case self::appendBefore: $aParent = $aTargetObject->parent(); if (!$aParent) { throw new Exception("遇到错误,无法将内容织入指定的路径"); } $aParent->insertBefore($aTargetObject, $aWeaveinObject); break; case self::appendAfter: $aParent = $aTargetObject->parent(); if (!$aParent) { throw new Exception("遇到错误,无法将内容织入指定的路径"); } $aParent->insertAfter($aTargetObject, $aWeaveinObject); break; case self::replace: $aParent = $aTargetObject->parent(); if (!$aParent) { throw new Exception("遇到错误,无法将内容织入指定的路径"); } $aParent->replace($aTargetObject, $aWeaveinObject); $aTargetObject = $aWeaveinObject; break; } } }