ホームページ  >  記事  >  バックエンド開発  >  システムコアクラスを拡張するCIフレームワークの手法に関する分析

システムコアクラスを拡張するCIフレームワークの手法に関する分析

不言
不言オリジナル
2018-06-14 13:43:081301ブラウズ

この記事では、主にシステム コア クラスを拡張する CI フレームワークの方法を紹介し、システム コア クラスを拡張する CI フレームワークの手順と関連操作テクニックを例の形で分析します。必要な方はこの記事を参照してください。

この例では、CI フレームワークがシステムのコア クラスを拡張する方法を説明します。詳細は次のとおりです。

まず、システム拡張クラスは application/core 配下に配置されているため、システムのコア クラスは CI_Controller として起動できません。 CI_ を使用してアプリケーション /config/config.php を開く必要があります。 変更します:

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

はプレフィックスです!

一部のパブリック モジュールは次のとおりです。独自のコアクラスでアンインストールされました。

私は最近、Dilims (軽量バックグラウンド アーキテクチャ) を読みました。たとえば、彼のバックグラウンド拡張クラスは次のようなものです。いくつかの公開情報を検証、ログイン、Admin_Controller に追加するため、フロント デスクを作成するときにも同じことを行い、Font_Controller を拡張しました:

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

ヒント (頻繁に使用するもの)使用したツールや関数をヘルパーに配置できます!

上記がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。

関連する推奨事項:

CI フレームワークのビューにビューを読み込む方法について

CI フレームワークでの MVC の簡単な分析


以上がシステムコアクラスを拡張するCIフレームワークの手法に関する分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。