Analyse der Methoden des CI-Frameworks zur Erweiterung der Systemkernklassen

不言
Freigeben: 2023-04-01 07:22:02
Original
1306 Leute haben es durchsucht

Dieser Artikel stellt hauptsächlich die Methode des CI-Frameworks zur Erweiterung von Systemkernklassen vor und analysiert die Schritte und zugehörigen Betriebsfähigkeiten des CI-Frameworks zur Erweiterung von Systemkernklassen in Form von Beispielen

dieser Artikel Das Beispiel beschreibt, wie das CI-Framework die Kernklassen des Systems erweitert. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Zunächst wird Ihre Systemerweiterungsklasse unter application/core platziert. Ursprünglich ist die Kernklasse des Systems CI_Controller, sodass Sie nicht starten können mit CI_. Sie müssen die Anwendung /config/config.php öffnen. Ändern:

$config['subclass_prefix'] = 'MY_';
Nach dem Login kopieren

ist Ihr Präfix!

Einige öffentliche Module können sein in ihren eigenen Kernklassen deinstalliert. Verstanden!

Ich habe heutzutage Dilicms (leichte Hintergrundarchitektur) gelesen. Seine Hintergrunderweiterungsklasse sieht zum Beispiel so aus:

<?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();
  }
}
Nach dem Login kopieren

Es heißt einige öffentliche Informationen in die Verifizierung, Anmeldung und den Sprung in Admin_Controller ein, also habe ich beim Schreiben des Front Desks dasselbe gemacht und Font_Controller erweitert:

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(){
 }
}
Nach dem Login kopieren

Tipp, einige häufig Verwendete Tools und Funktionen können im Helfer platziert werden!

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.

Verwandte Empfehlungen:

Über die Methode zum Laden von Ansichten in der CI-Framework-Ansicht

Eine einfache Analyse von MVC im CI-Framework

Das obige ist der detaillierte Inhalt vonAnalyse der Methoden des CI-Frameworks zur Erweiterung der Systemkernklassen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage