[ci 프레임워크] 확장 시스템의 핵심 클래스

41325 단어
먼저 시스템 확장 클래스는 application/core 아래에 있습니다.원래 시스템 코어 클래스는 CI_Controller이므로 CI_로 시작할 수 없습니다.application/config/config.php를 열고 $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. *
  16. * @access public
  17. * @return void
  18. */
  19. public function __construct()
  20. {
  21. parent::__construct();
  22. $this->load->library('session');
  23. $this->settings->load('backend');
  24. $this->load->switch_theme(setting('backend_theme'));
  25. $this->_check_login();
  26. $this->load->library('acl');
  27. $this->load->library('plugin_manager');
  28. }
  29. // ------------------------------------------------------------------------
  30.  
  31. /**
  32. * 检查用户是否登录
  33. *
  34. * @access protected
  35. * @return void
  36. */
  37. protected function _check_login()
  38. {
  39. if ( ! $this->session->userdata('uid'))
  40. {
  41. redirect(setting('backend_access_point') . '/login');
  42. }
  43. else
  44. {
  45. $this->_admin = $this->user_mdl->get_full_user_by_username($this->session->userdata('uid'), 'uid');
  46. if ($this->_admin->status != 1)
  47. {
  48. $this->session->set_flashdata('error', "此帐号已被冻结,请联系管理员!");
  49. redirect(setting('backend_access_point') . '/login');
  50. }
  51. }
  52. }
  53. // ------------------------------------------------------------------------
  54.  
  55. /**
  56. * 加载视图
  57. *
  58. * @access protected
  59. * @param string
  60. * @param array
  61. * @return void
  62. */
  63. protected function _template($template, $data = array())
  64. {
  65. $data['tpl'] = $template;
  66. $this->load->view('sys_entry', $data);
  67. }
  68. // ------------------------------------------------------------------------
  69.  
  70. /**
  71. * 检查权限
  72. *
  73. * @access protected
  74. * @param string
  75. * @return void
  76. */
  77. protected function _check_permit($action = '', $folder = '')
  78. {
  79. if ( ! $this->acl->permit($action, $folder))
  80. {
  81. $this->_message('对不起,你没有访问这里的权限!', '', FALSE);
  82. }
  83. }
  84. // ------------------------------------------------------------------------
  85.  
  86. /**
  87. * 信息提示
  88. *
  89. * @access public
  90. * @param string
  91. * @param string
  92. * @param bool
  93. * @param string
  94. * @return void
  95. */
  96. public function _message($msg, $goto = '', $auto = TRUE, $fix = '')
  97. {
  98. if($goto == '')
  99. {
  100. $goto = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : site_url();
  101. }
  102. else
  103. {
  104. $goto = strpos($goto, 'http') !== false ? $goto : backend_url($goto);
  105. }
  106. $goto .= $fix;
  107. $this->_template('sys_message', array('msg' => $msg, 'goto' => $goto, 'auto' => $auto));
  108. echo $this->output->get_output();
  109. exit();
  110. }
  111. }
  112.  

일부 공개 정보를 확인, 로그인 및 Admin_Controller에서 점프하므로 프론트 데스크를 작성할 때도 동일한 작업을 수행하여 Font_Controller를 확장합니다.


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

팁, 자주 사용하는 도구와 기능을 도우미에 넣을 수 있습니다!

좋은 웹페이지 즐겨찾기