public function getOffice(array $params, array $default = array('_view' => 'Main')) { $list = $this->getClassList($params, $default); $frontOffice = new Miao_Office(); $frontOffice->setFactory($this); /** * TODO: refactoring */ $resource = new $list[lcfirst(Miao_Office::TYPE_RESOURCE)]($frontOffice); if ($list[lcfirst(Miao_Office::TYPE_VIEW)]) { $className = $list[lcfirst(Miao_Office::TYPE_VIEW)]; $path = Miao_Path::getDefaultInstance(); $templatesDir = $path->getModuleRoot($className) . '/templates'; $templatesObj = new Miao_Office_TemplatesEngine_PhpNative($templatesDir); $view = new $list[lcfirst(Miao_Office::TYPE_VIEW)]($templatesObj); $frontOffice->setView($view); } if ($list[lcfirst(Miao_Office::TYPE_VIEWBLOCK)]) { $viewBlock = new $list[lcfirst(Miao_Office::TYPE_VIEWBLOCK)](); $frontOffice->setViewBlock($viewBlock); } if ($list[lcfirst(Miao_Office::TYPE_ACTION)]) { $action = new $list[lcfirst(Miao_Office::TYPE_ACTION)](); $frontOffice->setAction($action); } $frontOffice->setResource($resource); $header = new Miao_Office_Header(); $frontOffice->setHeader($header); return $frontOffice; }