コード例 #1
0
ファイル: ViewAssembler.php プロジェクト: JeCat/framework
 private function assembleView(&$arrAssemblyList, IView $aView)
 {
     if (!($sViewId = $aView->id())) {
         throw new Exception("在装配视图时,遇到未注册的视图。");
     }
     // 视图已经装配过
     if (isset($this->arrViewAssemblyStat[$sViewId])) {
         // echo "view {$sViewId} has assembled, pre priority: {$this->arrViewAssemblyStat[$sViewId]['priority']}, this time priority: {$arrAssemblyList['filter']['priority']} <br />\r\n" ;
         // 比较两个 slot 的优先级
         if ($arrAssemblyList['filter']['priority'] > $this->arrViewAssemblyStat[$sViewId]['priority']) {
             // echo "remove {$sViewId} --- <<< {$this->arrViewAssemblyStat[$sViewId]['list']['id']} @ {$this->arrViewAssemblyStat[$sViewId]['listpos']} <br />" ;
             // 从原装配单中清除
             unset($this->arrViewAssemblyStat[$sViewId]['list']['items'][$this->arrViewAssemblyStat[$sViewId]['listpos']]);
             unset($this->arrViewAssemblyStat[$sViewId]);
         } else {
             return;
         }
     }
     // 写入装配单
     $arrAssemblyList['items'][] = array('type' => 'view', 'id' => $sViewId, 'object' => $aView);
     // 记录装配状态
     end($arrAssemblyList['items']);
     $nPos = key($arrAssemblyList['items']);
     $this->arrViewAssemblyStat[$sViewId] = array('list' => &$arrAssemblyList, 'listpos' => $nPos, 'priority' => $arrAssemblyList['filter']['priority']);
     // echo "assembling view [ {$sViewId} +++ >>> {$arrAssemblyList['id']} @ {$nPos} ] as priority {$arrAssemblyList['filter']['priority']} <br />" ;
 }