当前位置:Gxlcms > PHP教程 > 关于CI框架扩展系统核心类的方法分析

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

时间:2021-07-01 10:21:17 帮助过:2人阅读

这篇文章主要介绍了CI框架扩展系统核心类的方法,结合实例形式分析了CI框架实现扩展系统核心类的步骤与相关操作技巧,需要的朋友可以参考下

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

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

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

为你的前缀!

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

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

  1. <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
  2. abstract class Admin_Controller extends CI_Controller
  3. {
  4. /**
  5. * _admin
  6. * 保存当前登录用户的信息
  7. *
  8. * @var object
  9. * @access public
  10. **/
  11. public $_admin = NULL;
  12. /**
  13. * 构造函数
  14. *
  15. * @access public
  16. * @return void
  17. */
  18. public function __construct()
  19. {
  20. parent::__construct();
  21. $this->load->library('session');
  22. $this->settings->load('backend');
  23. $this->load->switch_theme(setting('backend_theme'));
  24. $this->_check_login();
  25. $this->load->library('acl');
  26. $this->load->library('plugin_manager');
  27. }
  28. /**
  29. * 检查用户是否登录
  30. *
  31. * @access protected
  32. * @return void
  33. */
  34. protected function _check_login()
  35. {
  36. if ( ! $this->session->userdata('uid'))
  37. {
  38. redirect(setting('backend_access_point') . '/login');
  39. }
  40. else
  41. {
  42. $this->_admin = $this->user_mdl->get_full_user_by_username($this->session->userdata('uid'), 'uid');
  43. if ($this->_admin->status != 1)
  44. {
  45. $this->session->set_flashdata('error', "此帐号已被冻结,请联系管理员!");
  46. redirect(setting('backend_access_point') . '/login');
  47. }
  48. }
  49. }
  50. /**
  51. * 加载视图
  52. *
  53. * @access protected
  54. * @param string
  55. * @param array
  56. * @return void
  57. */
  58. protected function _template($template, $data = array())
  59. {
  60. $data['tpl'] = $template;
  61. $this->load->view('sys_entry', $data);
  62. }
  63. /**
  64. * 检查权限
  65. *
  66. * @access protected
  67. * @param string
  68. * @return void
  69. */
  70. protected function _check_permit($action = '', $folder = '')
  71. {
  72. if ( ! $this->acl->permit($action, $folder))
  73. {
  74. $this->_message('对不起,你没有访问这里的权限!', '', FALSE);
  75. }
  76. }
  77. /**
  78. * 信息提示
  79. *
  80. * @access public
  81. * @param string
  82. * @param string
  83. * @param bool
  84. * @param string
  85. * @return void
  86. */
  87. public function _message($msg, $goto = '', $auto = TRUE, $fix = '')
  88. {
  89. if($goto == '')
  90. {
  91. $goto = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : site_url();
  92. }
  93. else
  94. {
  95. $goto = strpos($goto, 'http') !== false ? $goto : backend_url($goto);
  96. }
  97. $goto .= $fix;
  98. $this->_template('sys_message', array('msg' => $msg, 'goto' => $goto, 'auto' => $auto));
  99. echo $this->output->get_output();
  100. exit();
  101. }
  102. }

它就把一些公共信息入验证,登陆,跳转放在Admin_Controller里面,于是我在写前台的时候也是这样操作,扩展了Font_Controller:

  1. abstract class Font_Controller extends CI_Controller{
  2. public function __construct() {
  3. parent::__construct();
  4. }
  5. //前台加载视图方法
  6. public function _template($template, $data = array()){
  7. $data['nav'] = $this->get_nav();
  8. $data['tpl'] = $template;
  9. $this->load->view('default',$data);
  10. }
  11. //公共导航信息
  12. public function get_nav(){
  13. }
  14. //公共友情链接信息
  15. public function get_friendlink(){
  16. }
  17. }

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

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

关于CI框架视图中加载视图的方法

CI框架中MVC的简单分析

以上就是关于CI框架扩展系统核心类的方法分析的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行