CI框架扩展系统核心类的方法分析


Posted in PHP onMay 23, 2016

本文实例讲述了CI框架扩展系统核心类的方法。分享给大家供大家参考,具体如下:

首先你系统扩展类是放在application/core下面的,本来系统核心类是CI_Controller,所以你不能以CI_开头了,你需要打开 application/config/config.php 修改:

$config['subclass_prefix'] = 'MY_';

为你的前缀!

一些公共的模块就可以卸载自己的核心类里面了!

这几天读了Dilicms(轻量级的后台架构),比如说他的后台扩展类是这样的:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
abstract class Admin_Controller extends CI_Controller
{
  /**
  * _admin
  * 保存当前登录用户的信息
  *
  * @var object
  * @access public
  **/
  public $_admin = NULL;
  /**
  * 构造函数
  *
  * @access public
  * @return void
  */
  public function __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');
  }
 /**
  * 检查用户是否登录
  *
  * @access protected
  * @return void
  */
  protected function _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');
      }
    }
  }
 /**
  * 加载视图
  *
  * @access protected
  * @param string
  * @param array
  * @return void
  */
  protected function _template($template, $data = array())
  {
    $data['tpl'] = $template;
    $this->load->view('sys_entry', $data);
  }
 /**
  * 检查权限
  *
  * @access protected
  * @param string
  * @return void
  */
  protected function _check_permit($action = '', $folder = '')
  {
    if ( ! $this->acl->permit($action, $folder))
    {
      $this->_message('对不起,你没有访问这里的权限!', '', FALSE);
    }
  }
 /**
  * 信息提示
  *
  * @access public
  * @param string
  * @param string
  * @param bool
  * @param string
  * @return void
  */
  public function _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:

abstract class Font_Controller extends CI_Controller{
 public function __construct() {
  parent::__construct();
 }
 //前台加载视图方法
 public function _template($template, $data = array()){
  $data['nav'] = $this->get_nav();
  $data['tpl'] = $template;
  $this->load->view('default',$data);
 }
 //公共导航信息
 public function get_nav(){
 }
 //公共友情链接信息
 public function get_friendlink(){
 }
}

提示,一些经常用到得工具和函数可以放在helper中!

希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。

PHP 相关文章推荐
献给php初学者(入门学习经验谈)
Oct 12 PHP
php时区转换转换函数
Jan 07 PHP
php自动加载autoload机制示例分享
Feb 20 PHP
最常用的8款PHP调试工具
Jul 06 PHP
将CMYK颜色值和RGB颜色相互转换的PHP代码
Jul 28 PHP
如何让搜索引擎抓取AJAX内容解决方案
Aug 25 PHP
thinkphp实现like模糊查询实例
Oct 29 PHP
PHP 常用的header头部定义汇总
Jun 19 PHP
利用php抓取蜘蛛爬虫痕迹的示例代码
Sep 30 PHP
PHP+Apache环境中如何隐藏Apache版本
Nov 24 PHP
PHP字符串与数组处理函数用法小结
Jan 07 PHP
PHP实现获取文件mime类型多种方法解析
May 28 PHP
PHP strip_tags保留多个HTML标签的方法
May 22 #PHP
项目中应用Redis+Php的场景
May 22 #PHP
Yii2.0 模态弹出框+ajax提交表单
May 22 #PHP
php文件上传后端处理小技巧
May 22 #PHP
PHP strip_tags() 去字符串中的 HTML、XML 以及 PHP 标签的函数
May 22 #PHP
PHP+MySql+jQuery实现的&quot;顶&quot;和&quot;踩&quot;投票功能
May 21 #PHP
制作个性化的WordPress登陆界面的实例教程
May 21 #PHP
You might like
php根据日期显示所在星座的方法
2015/07/13 PHP
PHP 数组操作详解【遍历、指针、函数等】
2020/05/13 PHP
一些实用的jQuery代码片段收集
2011/07/12 Javascript
JQuery实现表格中相同单元格合并示例代码
2013/06/26 Javascript
利用原生JavaScript获取元素样式只是获取而已
2014/10/08 Javascript
jQuery中prev()方法用法实例
2015/01/08 Javascript
javascript实现图片循环渐显播放的方法
2015/02/24 Javascript
Vue.js教程之计算属性
2016/11/11 Javascript
Extjs让combobox写起来简洁又漂亮
2017/01/05 Javascript
整理关于Bootstrap模态弹出框的慕课笔记
2017/03/29 Javascript
深入理解jquery的$.extend()、$.fn和$.fn.extend()
2017/07/08 jQuery
如何在selenium中使用js实现定位
2020/08/18 Javascript
[14:00]DOTA2国际邀请赛史上最长大战 赛后专访B神
2013/08/10 DOTA
从零学python系列之数据处理编程实例(二)
2014/05/22 Python
pycharm 使用心得(八)如何调用另一文件中的函数
2014/06/06 Python
简单理解Python中的装饰器
2015/07/31 Python
Python面向对象特殊成员
2017/04/24 Python
Python通过调用mysql存储过程实现更新数据功能示例
2018/04/03 Python
python获取时间及时间格式转换问题实例代码详解
2018/12/06 Python
在scrapy中使用phantomJS实现异步爬取的方法
2018/12/17 Python
python按比例随机切分数据的实现
2019/07/11 Python
python日志模块logbook使用方法
2019/09/19 Python
Python中的四种交换数值的方法解析
2019/11/18 Python
CSS3实战第一波 让我们尽情的圆角吧
2010/08/27 HTML / CSS
IE支持HTML5的解决方法
2009/10/20 HTML / CSS
美国诺德斯特龙百货官网:Nordstrom
2016/08/23 全球购物
美国婴儿和儿童服装购物网站:PatPat
2020/10/01 全球购物
中东奢侈品购物网站:Ounass
2020/09/02 全球购物
村优秀党员事迹材料
2014/01/15 职场文书
环保口号大全
2014/06/12 职场文书
副校长个人对照检查材料思想汇报
2014/10/04 职场文书
教师查摆问题及整改措施
2014/10/11 职场文书
县委党的群众路线教育实践活动工作情况报告
2014/10/25 职场文书
考试作弊检讨书范文
2015/01/27 职场文书
幼儿园教师节活动总结
2015/03/23 职场文书
看上去很美观后感
2015/06/10 职场文书