程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> 擴展CodeIgniter系統核心類

擴展CodeIgniter系統核心類

編輯:PHP綜合

首先你系統擴展類是放在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(){
       
    }  
}
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(){
       
    }  
}
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中!

*
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved