本文实例讲述了CI框架扩展系统核心类的方法。分享给大家供大家参考,具体如下:
首先你系统扩展类是放在application/core下面的,本来系统核心类是CI_Controller,所以你不能以CI_开头了,你需要打开 application/config/config.php 修改:
1
|
$config [ 'subclass_prefix' ] = 'MY_' ;
|
为你的前缀!
一些公共的模块就可以卸载自己的核心类里面了!
这几天读了Dilicms(轻量级的后台架构),比如说他的后台扩展类是这样的:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
<?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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
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程序设计有所帮助。