コード例 #1
0
ファイル: Patch.php プロジェクト: JeCat/framework
 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;
         }
     }
 }