基础控制器
1. 基础控制器 class grace{...} 说明
所有的自定义控制器必须继承 grace 基础控制器,基础控制器内置了一些常用的方法以便您的开发!您也可以扩展 grace 来实现更为便捷的开发。
2. 源码解析
// 基础控制器定义 class grace{ // url 解析后获得的数据 public $gets; // 核心数据表名 public $tableName = null; // 数据表主键 public $tableKey = null; // 数据表操作对象 public $db; // 数据排序规则 public $order = null; // 是否过滤 $_POST 数据内的 < > , 可防止跨站攻击 public $postFilter = true; // 网页信息 array(页面标题, 页面关键字, 页面描述) public $pageInfo = array('', '', ''); // 缓存对象 protected $cacher = null; // 缓存名称 protected $cacheName; // 是否运行追踪 public $trace = true; // 视图基础目录 protected $templateDir; // 构造函数 public function __construct(){} // 初始化函数,系统自动调用,相当于构造函数 public function __init(){} // 默认 index 方法 public function index(){} // 视图展示方法 public function display($tplName = null){} // 语言包设置 protected function setLang($langType){ } // 输出 json 形式的信息并终止程序运行 protected function json($data, $type = 'ok'){} // 获取数据列表 protected function dataList($everyPagerNum = 20, $fields = '*'){} // 利用 id 获取一条数据 protected function getDataById(){} // 获取一条数据并以默认值形式复制给对应表单元素 protected function getDefaultVal($exception = array()){} // 跳转到应用首页 public function skipToIndex(){} // 获取缓存对象 protected function getCacher(){} // 设置并获取缓存数据 protected function cache($name, $id = null, $queryMethod, $timer = 3600, $isSuper = true){} // 清除全部缓存 public function clearCache(){} // 清除指定缓存 public function removeCache($name, $id = null, $isSuper = true){} // 初始化 gets 数据 // 如果某个指定的数据为空则进行定义及赋值 protected function initGets($key, $val = ''){} // 将 gets 指定数据整数化 protected function intGets($key, $val = 0){} }
3. 基础控制器扩展
您可以扩展基础控制器,然后自己创建的控制器都继承自己的控制器,这样可以实现更多全局功能,例 :
网站后台控制器扩展 :
<?php /** * 管理后台 -> 基础控制器 */ class baseController extends grace{ public function __init(){ parent::__init(); $this->checkLogin(); } protected function checkLogin($auth = null){ if(empty($_SESSION['graceMangerId'])){ // 注意 login 控制器不要继承 baseController 而是 grace // 要不会造成死循环 header('location:'.PG_SROOT.'login'); pgExit(); } } //... 其他代码
上面的代码演示了 :
网站后台管理系统开发时,大部分页面都需要检查后台管理员的登录信息,我们在自定义基础控制器内封装 checkLogin() 方法对用户登录信息进行检查,如果用户没有登录会跳转到登陆页面。同时利用 __init() 函数自动执行检查函数。
有了上面的基础控制器,我们在开发网站后台时就可以这样创建控制器 :
class 自定义控制 extends 自定义基础控制器。
<?php class systemController extends baseController{ public function __init(){ parent::__init(); $this->checkAuth(); } public function index(){} //.... }