本文实例讲述了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程序设计有所帮助。