/** * 执行控制器 * @param ZcAction $action * @param ZcAction $error */ public function dispatch($action, $error = null) { //处理过滤器,放在这个位置,说明只对类似Servlet规范的Request处理起作用 $filters = ZcFactory::getConfig()->get(ZcConfigConst::Filters); if (!empty($filters)) { $matchFilterRoutes = array(); foreach ($filters as $filter) { $matchNum = preg_match($filter['route.pattern'], $action->getRoute()); if ($matchNum > 0) { $matchFilterRoutes[] = $filter['route']; } } foreach ($matchFilterRoutes as $matchFilterRoute) { $filterAction = new ZcAction($matchFilterRoute); $filterRetAction = $this->execute($filterAction); //当前filter可以执行三种操作:只是更改请求期间的数据,啥都不做;forward;redirect if ($filterRetAction && $filterAction instanceof ZcAction) { $action = $filterAction; break; } } } while ($action) { $action = $this->execute($action, $error); } }
public function __construct() { $urlHandlerConfig = ZcFactory::getConfig()->get(ZcConfigConst::UrlHandler); if (!empty($urlHandlerConfig['file'])) { require_once Zc::C(ZcConfigConst::DirFsApp) . $urlHandlerConfig['file']; } $this->urlHandler = new $urlHandlerConfig['class'](); }
protected function getDbLink() { if ($this->dbLink) { return $this->dbLink; } $config = ZcFactory::getConfig(); $this->dbLink = new ZcDbSimpleMysql($config->get(ZcConfigConst::MonitorDbServer), $config->get(ZcConfigConst::MonitorDbUsername), $config->get(ZcConfigConst::MonitorDbPassword), $config->get(ZcConfigConst::MonitorDbDatabase)); return $this->dbLink; }
private static function initConfig() { $config = ZcFactory::getConfig(); //获取绝对路径的自动加载目录 $dirsFs = $config->get(ZcConfigConst::AutoloadDirsFs); if (!empty($dirsFs)) { foreach ($dirsFs as $dir) { self::$autoloadDirs[] = rtrim(trim($dir), '/') . '/'; } } //获取应用路径的自动加载目录 $dirsWs = $config->get(ZcConfigConst::AutoloadDirsWs); $dirApp = $config->get(ZcConfigConst::DirFsApp); if (!empty($dirsWs)) { foreach ($dirsWs as $dir) { self::$autoloadDirs[] = $dirApp . trim(trim($dir), '/') . '/'; } } self::$autoloadClassFileMapping = $config->get(ZcConfigConst::AutoloadClassFileMapping); //自动加载文件 self::$includeFiles = $config->get(ZcConfigConst::AutoloadIncludeFiles); }
private static function initTimezone() { $config = ZcFactory::getConfig(); $timezone = $config->get(ZcConfigConst::DefaultTimezone); if (!empty($timezone)) { date_default_timezone_set($timezone); } }
public function __construct($currentLanguage, $defaultLanguage) { $this->currentLanguage = $currentLanguage; $this->defaultLanguage = $defaultLanguage; $this->baseDir = ZcFactory::getConfig()->get(ZcConfigConst::DirFsApp) . 'languages/'; }