Symfoware

Symfowareについての考察blog

CodeIgniter 3 Core Systemの拡張方法(General Topics - Creating Core System Classes)

CodeIgniter User Guide

General TopicsのCreating Core System Classesについて調べてみます。
Creating Core System Classes


Creating Core System Classes



CodeIgniterは、実行時毎回コアフレームワークを自動的に初期化して実行されます。
このコアフレームワークの機能も置き換えや拡張が可能です。

ただし、コアフレームワークの変更はバージョンアップ時に動かなくなったり、
他の機能を阻害したりする可能性があるため、
「この手を使わないと問題が解決しない」
という場合のみ用いる、最終手段としたほうが良さげです。



System Class List



コアシステムと呼ばれているのは以下のクラスです。


・Benchmark
・Config
・Controller
・Exceptions
・Hooks
・Input
・Language
・Loader
・Log
・Output
・Router
・Security
・URI
・Utf8






Replacing Core Classes



コア機能を置き換えるには、「application/core/」フォルダにプログラムファイルを配置します。


例)
application/core/some_class.php




Inputの機能を置き換えたい場合は、
application/core/Input.phpを作成。
CI_Inputという名前のクラスを定義します。


  1. class CI_Input {
  2. }







Extending Core Class



コアクラスを拡張したい時のルールは2つ。

・拡張したい機能をextendsする。
・クラス名のプリフィックスに「MY_」をつける。


Inputクラスを拡張したい場合は、
application/core/MY_Input.php
というファイルを作成。

内容は以下のようになります。


  1. class MY_Input extends CI_Input {
  2. }




もし、コンストラクタを拡張するのであれば、
親のコンストラクタを呼び出しておくのを忘れずに。


  1. class MY_Input extends CI_Input {
  2.     public function __construct() {
  3.         // 忘れずに親を呼び出しておく
  4.         parent::__construct();
  5.     }
  6. }




全体的なサンプルは、こんな感じになるはずです。


  1. class Welcome extends MY_Controller {
  2.     public function __construct() {
  3.         parent::__construct();
  4.     }
  5.     public function index() {
  6.         $this->load->view('welcome_message');
  7.     }
  8. }






Setting Your Own Prefix



「MY_」というプリフィックスが気に入らない場合、
application/config/config.phpで変更可能です。


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




ただし、「CI_」は予約後なので指定しないように。




CodeIgniter 3のユーザーガイド(User Guide)まとめ
関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2015/01/25(日) 15:38:27|
  2. PHP
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<CodeIgniter 3 補助的なクラスの作成方法(General Topics - Creating Ancillary Classes) | ホーム | CodeIgniter 3 独自Driverの作り方(General Topics - Creating Drivers)>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1605-3f715987
この記事にトラックバックする(FC2ブログユーザー)