CI框架扩展系统核心类的方法分析
本文实例讲述了CI框架扩展系统核心类的方法。分享给大家供大家参考,具体如下:
首先你系统扩展类是放在application/core下面的,本来系统核心类是CI_Controller,所以你不能以CI_开头了,你需要打开application/config/config.php修改:
$config['subclass_prefix']='MY_';
为你的前缀!
一些公共的模块就可以卸载自己的核心类里面了!
这几天读了Dilicms(轻量级的后台架构),比如说他的后台扩展类是这样的:
<?phpif(!defined('BASEPATH'))exit('Nodirectscriptaccessallowed'); abstractclassAdmin_ControllerextendsCI_Controller { /** *_admin *保存当前登录用户的信息 * *@varobject *@accesspublic **/ public$_admin=NULL; /** *构造函数 * *@accesspublic *@returnvoid */ publicfunction__construct() { parent::__construct(); $this->load->library('session'); $this->settings->load('backend'); $this->load->switch_theme(setting('backend_theme')); $this->_check_login(); $this->load->library('acl'); $this->load->library('plugin_manager'); } /** *检查用户是否登录 * *@accessprotected *@returnvoid */ protectedfunction_check_login() { if(!$this->session->userdata('uid')) { redirect(setting('backend_access_point').'/login'); } else { $this->_admin=$this->user_mdl->get_full_user_by_username($this->session->userdata('uid'),'uid'); if($this->_admin->status!=1) { $this->session->set_flashdata('error',"此帐号已被冻结,请联系管理员!"); redirect(setting('backend_access_point').'/login'); } } } /** *加载视图 * *@accessprotected *@paramstring *@paramarray *@returnvoid */ protectedfunction_template($template,$data=array()) { $data['tpl']=$template; $this->load->view('sys_entry',$data); } /** *检查权限 * *@accessprotected *@paramstring *@returnvoid */ protectedfunction_check_permit($action='',$folder='') { if(!$this->acl->permit($action,$folder)) { $this->_message('对不起,你没有访问这里的权限!','',FALSE); } } /** *信息提示 * *@accesspublic *@paramstring *@paramstring *@parambool *@paramstring *@returnvoid */ publicfunction_message($msg,$goto='',$auto=TRUE,$fix='') { if($goto=='') { $goto=isset($_SERVER['HTTP_REFERER'])?$_SERVER['HTTP_REFERER']:site_url(); } else { $goto=strpos($goto,'http')!==false?$goto:backend_url($goto); } $goto.=$fix; $this->_template('sys_message',array('msg'=>$msg,'goto'=>$goto,'auto'=>$auto)); echo$this->output->get_output(); exit(); } }
它就把一些公共信息入验证,登陆,跳转放在Admin_Controller里面,于是我在写前台的时候也是这样操作,扩展了Font_Controller:
abstractclassFont_ControllerextendsCI_Controller{ publicfunction__construct(){ parent::__construct(); } //前台加载视图方法 publicfunction_template($template,$data=array()){ $data['nav']=$this->get_nav(); $data['tpl']=$template; $this->load->view('default',$data); } //公共导航信息 publicfunctionget_nav(){ } //公共友情链接信息 publicfunctionget_friendlink(){ } }
提示,一些经常用到得工具和函数可以放在helper中!
更多关于CodeIgniter相关内容感兴趣的读者可查看本站专题:《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《php优秀开发框架总结》、《ThinkPHP入门教程》、《ThinkPHP常用方法总结》、《ZendFrameWork框架入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。