시스템 핵심 클래스를 확장하는 CI 프레임워크의 방법 분석

不言
풀어 주다: 2023-04-01 07:22:02
원래의
1306명이 탐색했습니다.

이 글에서는 시스템 핵심 클래스를 확장하기 위한 CI 프레임워크의 방법을 주로 소개합니다. 시스템 핵심 클래스를 확장하기 위한 CI 프레임워크의 단계와 관련 운영 기법을 예제 형식으로 분석합니다.

예제 이 문서에서는 CI 프레임워크 확장 방법을 설명합니다. 참고용으로 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다.

먼저 시스템 확장 클래스는 애플리케이션/코어 아래에 배치됩니다. 원래 시스템의 핵심 클래스는 CI_Controller이므로 CI_로 시작할 수 없습니다. application/config/config .php 수정을 열어야 합니다:

$config['subclass_prefix'] = 'MY_';
로그인 후 복사

이 접두사입니다!

일부 공용 모듈은 자체 핵심 클래스에서 제거될 수 있습니다!

지난 며칠 동안 Dilicms(경량 백엔드 아키텍처)를 읽었습니다. 예를 들어 그의 백엔드 확장 클래스는 다음과 같습니다.

<?php if ( ! defined(&#39;BASEPATH&#39;)) exit(&#39;No direct script access allowed&#39;);
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(&#39;session&#39;);
    $this->settings->load(&#39;backend&#39;);
    $this->load->switch_theme(setting(&#39;backend_theme&#39;));
    $this->_check_login();
    $this->load->library(&#39;acl&#39;);
    $this->load->library(&#39;plugin_manager&#39;);
  }
 /**
  * 检查用户是否登录
  *
  * @access protected
  * @return void
  */
  protected function _check_login()
  {
    if ( ! $this->session->userdata(&#39;uid&#39;))
    { 
      redirect(setting(&#39;backend_access_point&#39;) . &#39;/login&#39;);
    }
    else
    {
      $this->_admin = $this->user_mdl->get_full_user_by_username($this->session->userdata(&#39;uid&#39;), &#39;uid&#39;);
      if ($this->_admin->status != 1)
      {
        $this->session->set_flashdata(&#39;error&#39;, "此帐号已被冻结,请联系管理员!");
        redirect(setting(&#39;backend_access_point&#39;) . &#39;/login&#39;);
      }
    }
  }
 /**
  * 加载视图
  *
  * @access protected
  * @param string
  * @param array
  * @return void
  */
  protected function _template($template, $data = array())
  {
    $data[&#39;tpl&#39;] = $template;
    $this->load->view(&#39;sys_entry&#39;, $data);
  }
 /**
  * 检查权限
  *
  * @access protected
  * @param string
  * @return void
  */
  protected function _check_permit($action = &#39;&#39;, $folder = &#39;&#39;)
  {
    if ( ! $this->acl->permit($action, $folder))
    {
      $this->_message(&#39;对不起,你没有访问这里的权限!&#39;, &#39;&#39;, FALSE);
    }
  }
 /**
  * 信息提示
  *
  * @access public
  * @param string
  * @param string
  * @param bool
  * @param string
  * @return void
  */
  public function _message($msg, $goto = &#39;&#39;, $auto = TRUE, $fix = &#39;&#39;)
  {
    if($goto == &#39;&#39;)
    {
      $goto = isset($_SERVER[&#39;HTTP_REFERER&#39;]) ? $_SERVER[&#39;HTTP_REFERER&#39;] : site_url();
    }
    else
    {
      $goto = strpos($goto, &#39;http&#39;) !== false ? $goto : backend_url($goto);  
    }
    $goto .= $fix;
    $this->_template(&#39;sys_message&#39;, array(&#39;msg&#39; => $msg, &#39;goto&#39; => $goto, &#39;auto&#39; => $auto));
    echo $this->output->get_output();
    exit();
  }
}
로그인 후 복사

확인, 로그인 및 점프에 일부 공개 정보를 넣습니다. , 프런트 데스크를 작성할 때도 같은 작업을 수행했습니다. Font_Controller:

abstract class Font_Controller extends CI_Controller{
 public function __construct() {
  parent::__construct();
 }
 //前台加载视图方法
 public function _template($template, $data = array()){
  $data[&#39;nav&#39;] = $this->get_nav();
  $data[&#39;tpl&#39;] = $template;
  $this->load->view(&#39;default&#39;,$data);
 }
 //公共导航信息
 public function get_nav(){
 }
 //公共友情链接信息
 public function get_friendlink(){
 }
}
로그인 후 복사

팁, 자주 사용하는 일부 도구와 기능을 도우미에 배치할 수 있습니다!

위 내용은 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되었으면 좋겠습니다. 더 많은 관련 내용은 PHP 중국어 홈페이지를 주목해주세요!

관련 권장 사항:

CI 프레임워크 보기에서 보기를 로드하는 방법에 대해

CI 프레임워크에서 MVC에 대한 간단한 분석

위 내용은 시스템 핵심 클래스를 확장하는 CI 프레임워크의 방법 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿