您好,欢迎访问一九零五行业门户网

phpcms源码 参数param配备

phpcms源码 参数param配置
上节说到了application.class.php,当application类加载时,就会对路由进行初始化。
其中调用了param.class.php中的一些函数。
?
现在就来看一下param.class.php这个类
此类中,首先是定义了一个私有变量,用来接收路由配置。
//路由配置 private $route_config = '';
?看一下它的构造函数吧。
public function __construct() { if(!get_magic_quotes_gpc()) { $_post = new_addslashes($_post); $_get = new_addslashes($_get); $_request = new_addslashes($_request); $_cookie = new_addslashes($_cookie); } //初始化私有变量$route_config,从系统配置文件route.php中获取 $this->route_config = pc_base::load_config('route', site_url) ? pc_base::load_config('route', site_url) : pc_base::load_config('route', 'default'); //若route.php中配置了$_post全局变量,则读取,键值对依依对应 if(isset($this->route_config['data']['post']) && is_array($this->route_config['data']['post'])) { foreach($this->route_config['data']['post'] as $_key => $_value) { if(!isset($_post[$_key])) $_post[$_key] = $_value; } } //若route.php中配置了$_get全局变量,则读取,键值对依依对应 if(isset($this->route_config['data']['get']) && is_array($this->route_config['data']['get'])) { foreach($this->route_config['data']['get'] as $_key => $_value) { if(!isset($_get[$_key])) $_get[$_key] = $_value; } } //get传参方式中传递了分页(page),则对其进行处理 if(isset($_get['page'])) { $_get['page'] = max(intval($_get['page']),1); $_get['page'] = min($_get['page'],1000000000); } return true; }
?route.php 原始文件
array( * 'm'=>'phpcms', * 'c'=>'index', * 'a'=>'init', * 'data'=>array( * 'post'=>array( * 'catid'=>1 * ), * 'get'=>array( * 'contentid'=>1 * ) * ) * ) * 基中“m”为模型,“c”为控制器,“a”为事件,“data”为其他附加参数。 * data为一个二维数组,可设置post和get的默认参数。post和get分别对应php中的$_post和$_get两个超全局变量。在程序中您可以使用$_post['catid']来得到data下面post中的数组的值。 * data中的所设置的参数等级比较低。如果外部程序有提交相同的名字的变量,将会覆盖配置文件中所设置的值。如: * 外部程序post了一个变量catid=2那么你在程序中使用$_post取到的值是2,而不是配置文件中所设置的1。 */return array( 'default'=>array('m'=>'content', 'c'=>'index', 'a'=>'init'),);
?
上面讲到了application类初始化中调用了param类中的函数,下面来看一下
获取模型
/** * 获取模型 */ public function route_m() { $m = isset($_get['m']) && !empty($_get['m']) ? $_get['m'] : (isset($_post['m']) && !empty($_post['m']) ? $_post['m'] : ''); $m = $this->safe_deal($m); if (empty($m)) { return $this->route_config['m']; } else { if(is_string($m)) return $m; } }
?
获取控制器
/** * 获取控制器 */ public function route_c() { $c = isset($_get['c']) && !empty($_get['c']) ? $_get['c'] : (isset($_post['c']) && !empty($_post['c']) ? $_post['c'] : ''); $c = $this->safe_deal($c); if (empty($c)) { return $this->route_config['c']; } else { if(is_string($c)) return $c; } }
?
获取事件
/** * 获取事件 */ public function route_a() { $a = isset($_get['a']) && !empty($_get['a']) ? $_get['a'] : (isset($_post['a']) && !empty($_post['a']) ? $_post['a'] : ''); $a = $this->safe_deal($a); if (empty($a)) { return $this->route_config['a']; } else { if(is_string($a)) return $a; } }
?
该类中还定义了三个函数,供调用
/** * 安全处理函数 * 处理m,a,c */ private function safe_deal($str) { return str_replace(array('/', '.'), '', $str); }
?cookies函数
/** * 设置 cookie * @param string $var 变量名 * @param string $value 变量值 * @param int $time 过期时间 */ public static function set_cookie($var, $value = '', $time = 0) { $time = $time > 0 ? $time : ($value == '' ? sys_time - 3600 : 0); $s = $_server['server_port'] == '443' ? 1 : 0; $var = pc_base::load_config('system','cookie_pre').$var; $_cookie[$var] = $value; if (is_array($value)) { foreach($value as $k=>$v) { setcookie($var.'['.$k.']', sys_auth($v, 'encode'), $time, pc_base::load_config('system','cookie_path'), pc_base::load_config('system','cookie_domain'), $s); } } else { setcookie($var, sys_auth($value, 'encode'), $time, pc_base::load_config('system','cookie_path'), pc_base::load_config('system','cookie_domain'), $s); } }
?
/** * 获取通过 set_cookie 设置的 cookie 变量 * @param string $var 变量名 * @param string $default 默认值 * @return mixed 成功则返回cookie 值,否则返回 false */ public static function get_cookie($var, $default = '') { $var = pc_base::load_config('system','cookie_pre').$var; return isset($_cookie[$var]) ? sys_auth($_cookie[$var], 'decode') : $default; }
?
其它类似信息

推荐信息