protected function createPage($pagePath) { $path = $this->getBasePath() . DIRECTORY_SEPARATOR . strtr($pagePath, '.', DIRECTORY_SEPARATOR); $hasTemplateFile = is_file($path . self::PAGE_FILE_EXT); $hasClassFile = is_file($path . Prado::CLASS_FILE_EXT); if (!$hasTemplateFile && !$hasClassFile) { throw new THttpException(404, 'pageservice_page_unknown', $pagePath); } if ($hasClassFile) { $className = basename($path); $namespacedClassName = static::PAGE_NAMESPACE_PREFIX . str_replace('.', '\\', $pagePath); if (!class_exists($className, false) && !class_exists($namespacedClassName, false)) { include_once $path . Prado::CLASS_FILE_EXT; } if (!class_exists($className, false)) { $className = $namespacedClassName; } } else { $className = $this->getBasePageClass(); Prado::using($className); if (($pos = strrpos($className, '.')) !== false) { $className = substr($className, $pos + 1); } } if (!class_exists($className, false) || $className !== 'TPage' && !is_subclass_of($className, 'TPage')) { throw new THttpException(404, 'pageservice_page_unknown', $pagePath); } $page = Prado::createComponent($className); $page->setPagePath($pagePath); if ($hasTemplateFile) { $page->setTemplate($this->getTemplateManager()->getTemplateByFileName($path . self::PAGE_FILE_EXT)); } return $page; }