Maison  >  Article  >  développement back-end  >  Analyse des méthodes du cadre CI étendant les classes de base du système

Analyse des méthodes du cadre CI étendant les classes de base du système

不言
不言original
2018-06-14 13:43:081256parcourir

Cet article présente principalement la méthode du framework CI pour étendre les classes de base du système et analyse les étapes et les compétences opérationnelles associées du framework CI pour étendre les classes de base du système sous la forme d'exemples. Les amis dans le besoin peuvent se référer à

<.>cet article L'exemple décrit comment le framework CI étend les classes de base du système. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Tout d'abord, votre classe d'extension système est placée sous application/core. À l'origine, la classe principale du système est CI_Controller, vous ne pouvez donc pas démarrer. avec CI_ Vous devez ouvrir l'application /config/config.php Modifier :

$config[&#39;subclass_prefix&#39;] = &#39;MY_&#39;;

comme préfixe !

Quelques modules publics. peut désinstaller son propre noyau C'est dans la catégorie !

J'ai lu Dilicms (architecture d'arrière-plan légère) ces jours-ci. Par exemple, sa classe d'extension d'arrière-plan est comme ceci :

<?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();
  }
}

. Il place des informations publiques dans Admin_Controller pour la vérification, la connexion et le saut, j'ai donc fait la même chose lors de l'écriture à la réception, en étendant le 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(){
 }
}

Astuce, certains outils et fonctions fréquemment utilisés peuvent être placés dans l'assistant !

Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !

Recommandations associées :

À propos de la méthode de chargement des vues dans la vue du framework CI

Une analyse simple de MVC dans le framework CI

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn