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 mssql 分页SQL语句优化 持续影响
Apr 26 PHP
php小型企业库存管理系统的设计与实现代码
May 16 PHP
yii框架源码分析之创建controller代码
Jun 28 PHP
PHP 杂谈《重构-改善既有代码的设计》之四 简化条件表达式
Apr 09 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十三)
Jun 26 PHP
CI框架中site_url()和base_url()的区别
Jan 07 PHP
YII Framework框架教程之国际化实现方法
Mar 14 PHP
PHP中利用sleep函数实现定时执行功能实现代码
Aug 25 PHP
浅谈php中fopen不能创建中文文件名文件的问题
Feb 06 PHP
php生成毫秒时间戳的实例讲解
Sep 22 PHP
php web环境和命令行环境下查找php.ini的位置
Jul 17 PHP
Laravel框架基础语法与知识点整理【模板变量、输出、include引入子视图等】
Dec 03 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的chr和ord函数实现字符加减乘除运算实现代码
2011/12/05 PHP
修改PHP的memory_limit限制的方法分享
2012/02/21 PHP
PHP工程师VIM配置分享
2015/12/15 PHP
php打包网站并在线压缩为zip
2016/02/13 PHP
PHP生成制作验证码的简单实例
2016/06/12 PHP
PHP微信开发用Cache 解决数据缓存
2016/07/11 PHP
php版微信小店调用api示例代码
2016/11/12 PHP
屏蔽Flash右键信息的js代码
2010/01/17 Javascript
jQuery学习笔记之jQuery的DOM操作
2010/12/22 Javascript
如何使用json在前后台进行数据传输实例介绍
2013/04/11 Javascript
Javascript基础教程之break和continue语句
2015/01/18 Javascript
CKEditor无法验证的解决方案(js验证+jQuery Validate验证)
2016/05/09 Javascript
JS实现添加,替换,删除节点元素的方法
2016/06/30 Javascript
vue+vue-validator 表单验证功能的实现代码
2017/11/13 Javascript
layui对工具条进行选择性的显示方法
2019/09/19 Javascript
JavaScript Window浏览器对象模型原理解析
2020/05/30 Javascript
vue tab切换,解决echartst图表宽度只有100px的问题
2020/07/19 Javascript
python用字典统计单词或汉字词个数示例
2014/04/22 Python
python实现多人聊天室
2020/03/31 Python
python使用__slots__让你的代码更加节省内存
2018/09/05 Python
超简单的Python HTTP服务
2019/07/22 Python
python lambda表达式在sort函数中的使用详解
2019/08/28 Python
Python2与Python3的区别点整理
2019/12/12 Python
浅谈Python 命令行参数argparse写入图片路径操作
2020/07/12 Python
Python实现曲线拟合的最小二乘法
2021/02/19 Python
学点简单的Django之第一个Django程序的实现
2021/02/24 Python
施华洛世奇英国官网:SWAROVSKI英国
2017/03/13 全球购物
美国巧克力喷泉品牌:Sephra
2019/05/05 全球购物
热能动力工程毕业生自荐信
2013/11/07 职场文书
后勤人员岗位职责
2013/12/17 职场文书
技术总监个人的自我评价范文
2013/12/18 职场文书
初三学生个人自我评定
2014/04/06 职场文书
股东协议书范本
2014/04/14 职场文书
企业理念标语
2014/06/09 职场文书
党员教师群众路线对照检查材料思想汇报
2014/09/29 职场文书
Golang二维数组的使用方式
2021/05/28 Golang