Example #1
0
 /**
  * 执行控制器
  * @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);
     }
 }
Example #2
0
 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;
 }
Example #4
0
 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);
 }
Example #5
0
 private static function initTimezone()
 {
     $config = ZcFactory::getConfig();
     $timezone = $config->get(ZcConfigConst::DefaultTimezone);
     if (!empty($timezone)) {
         date_default_timezone_set($timezone);
     }
 }
Example #6
0
 public function __construct($currentLanguage, $defaultLanguage)
 {
     $this->currentLanguage = $currentLanguage;
     $this->defaultLanguage = $defaultLanguage;
     $this->baseDir = ZcFactory::getConfig()->get(ZcConfigConst::DirFsApp) . 'languages/';
 }