function ext_view_init(UnPHP $app, UnPHP_Dispatcher $dispatcher) { $conf = $app->getConfig(); if (isset($conf['view'])) { $c = $conf['view']; if (isset($c['themespath']) && isset($c['cachemode'])) { $themesPath = $c['themespath']; $cachemodeList = explode(",", $c['cachemode']); foreach ($cachemodeList as $mode) { if (isset($c[$mode])) { $modeConf = $c[$mode]; if (isset($modeConf['tempPath'])) { $newSmarty = "Ext_View_" . ucfirst($mode) . "Smarty"; $view = new $newSmarty(); if ($view->init($modeConf)) { $view->setScriptPath($themesPath); $dispatcher->setView($view); break; } } } } } } }
function ext_databases_init(UnPHP $app, UnPHP_Dispatcher $dispatcher) { $conf = $app->getConfig(); if (isset($conf['databases'])) { $c = $conf['databases']; $bothDB = array(); $otherDB = array(); foreach ($c as $d) { if (isset($d['dsn']) && isset($d['user']) && isset($d['password']) && isset($d['tables']) && isset($d['action'])) { switch ($d['action']) { case 'both': $bothDB[] = $d; break; case 'read': $otherDB[] = $d; break; case 'write': $otherDB[] = $d; break; } } } foreach ($bothDB as $d) { $tables = explode(",", $d['tables']); $dsn = $d['dsn']; $user = $d['user']; $password = $d['password']; foreach ($tables as $table) { Ext_Databases_Model::regionPool($table, $dsn, $user, $password, Ext_Databases_Model::ACTION_BOTH); } } foreach ($otherDB as $d) { $action = $d['action'] == "read" ? Ext_Databases_Model::ACTION_READ : Ext_Databases_Model::ACTION_WRITE; $tables = explode(",", $d['tables']); $dsn = $d['dsn']; $user = $d['user']; $password = $d['password']; foreach ($tables as $table) { Ext_Databases_Model::regionPool($table, $dsn, $user, $password, $action); } } } }
<?php /** * 应用入口文件 * @system UNPHP * @version UNPHP 1.0 * @author Xiao Tangren <*****@*****.**> * @data 2014-03-05 * */ define('APPLICATION_PATH', __DIR__); // 载入框架入口文件 require APPLICATION_PATH . '/../UnPHP/UnPHP.php'; // 设置公共库路径 UnPHP::setLibrary(APPLICATION_PATH . '/library'); // 创建(框架)应用 $UnPHP = new UnPHP(APPLICATION_PATH . '/conf/www.ini'); // 初始化应用,并执行应用 $UnPHP->bootstrap()->run();
/** * 初始化框架 * @author Xiao Tangren <*****@*****.**> * @data 2014-03-05 */ private function init($confFile) { error_reporting(0); $this->iniLoadFile(); $this->_dispatcher = UnPHP_Dispatcher::getInstance(); try { $ReadConf = new Unphp_ReadConf($confFile); $this->_config = $ReadConf->get(); switch ($this->_config['app']['debug']) { case 1: error_reporting(E_ERROR | E_PARSE | E_CORE_ERROR | E_COMPILE_ERROR | E_RECOVERABLE_ERROR); break; case 2: error_reporting(E_ALL); default: error_reporting(0); } $this->_modules = isset($this->_config['app']['modules']) ? explode(",", $this->_config['app']['modules']) : array(); self::$_app = $this; // 注册“自动加载”接管函数 $this->registerAutoLoad(); $request = new UnPHP_Request_Http(); // 设置默认模块/控制器/方法 isset($this->_config['app']['default_module']) ? $request->setDefaultModule($this->_config['app']['default_module']) : $request->setDefaultModule('index'); isset($this->_config['app']['default_controller']) ? $request->setDefaultController($this->_config['app']['default_controller']) : $request->setDefaultController('index'); isset($this->_config['app']['default_action']) ? $request->setDefaultAction($this->_config['app']['default_action']) : $request->setDefaultModule('index'); $this->_dispatcher->setRequest($request); // 设置框架404异常页面 $this->_dispatcher->setErrorController(new UnPHP_Error($request)); $this->extInit(); } catch (Exception $exc) { $exc->getMsg($this->_config['app']['debug'], $this->_dispatcher->getErrorController()); } }
/** * 默认路由: /m/c/a/params1/1/params2/2/... * @author Xiao Tangren <*****@*****.**> * @data 2014-03-05 * @param type $request * @return boolean */ public function route(UnPHP_Request_Abstract $request) { $rs = FALSE; $match = array(); $base_url = $request->getServer('REQUEST_URI'); $selfPramas = stripos($base_url, '?'); $base_url = $selfPramas ? substr($base_url, 0, $selfPramas) : $base_url; $match = explode("/", trim($base_url, '/\\')); $n = count($match); switch ($n) { case 0: $request->setModuleName($request->getDefaultModule()); $request->setControllerName($request->getDefaultController()); $request->setActionName($request->getDefaultAction()); $rs = TRUE; break; case 1: if (in_array($match[0], UnPHP::app()->getModules())) { $request->setModuleName($match[0]); $request->setControllerName($request->getDefaultController()); $request->setActionName($request->getDefaultAction()); } else { $request->setModuleName($request->getDefaultModule()); $request->setControllerName($match[0]); $request->setActionName($request->getDefaultAction()); } $rs = TRUE; break; case 2: if (in_array($match[0], UnPHP::app()->getModules())) { $request->setModuleName($match[0]); $request->setControllerName($match[1]); $request->setActionName($request->getDefaultAction()); $rs = TRUE; break; } else { $request->setModuleName($request->getDefaultModule()); $request->setControllerName($match[0]); $request->setActionName($match[1]); $rs = TRUE; break; } default: if (in_array($match[0], UnPHP::app()->getModules())) { $request->setModuleName($match[0]); $request->setControllerName($match[1]); $request->setActionName($match[2]); for ($i = 4; $i < $n; $i += 2) { $request->setParam($match[$i - 1], $match[$i]); } } else { $request->setModuleName($request->getDefaultModule()); $request->setControllerName($match[0]); $request->setActionName($match[1]); for ($i = 3; $i < $n; $i += 2) { $request->setParam($match[$i - 1], $match[$i]); } } $rs = TRUE; break; } return $rs; }