haiju's 開発メモ

開発に必要な情報を自分用にメモ

Codeigniter3.xでユーザー独自クラスを作成して利用するには?

サンプル用コントローラーの中で、private functionで定義

した各種ユーザー専用チェック関数をライブラリとして

外出しするにはどうするか調べてみた。

結論として独自クラスを、application/librariesの下に配置

して、呼びたいコントローラーのコンストラクタで、

「$this->load->library('defined_class');」みたいな感じで

読み込むっぽい。命名規約とloadする時の大文字小文字には

十分注意しないと大混乱するやつだな、これ。

ユーザーガイドを見ると、オブジェクト指向の書き方に則って

とか書いてあるけど、PHP7.3.xの書き方にも則らないといけない

よね、多分これは...(Φω|

とりあえず、従来の参照渡しの実装でいけた。

(今後、置換え対応は必要かも)

大雑把にまとめたので、もう少し中身を書いて実験しながら

得られた結果をあとでまとめておかないとな...

[手順]

1. コントローラーから外出しする関数(method)をまとめて、

 application/libraries/ に配置。

2. 命名規約

2-1. ファイル名の1文字目は大文字。

2-2. クラス宣言の1文字目は大文字。

2-3. クラス名とファイル名が一致。

(ex)class Mylib だった場合は、ファイル名「Mylib.php

3. コントローラーから1,2で定義した独自クラスを利用。

(ex)コンストラクタで、手動で独自クラスを読込。

$this->load->library('mylib');

クラス名とファイル名は1文字目が大文字だが、

コントローラーから読込む場合は、小文字で設定。

(ex)autoload.phpで定義して自動読込

$autoload['libraries'] = array('mylib');

f:id:haiju:20191106123703p:plain

4. ライブラリの初期化時に引数を与えたい場合は、ライブラリの

 コンストラクタに引数を追加して対応。

4-1. ロードされるライブラリ側ではコンストラクタで引数を受取る。

(ex)パラメータを定義して設定

$params = array('type' => 'large', 'color' => 'red');

or

$params = ['type' => 'large', 'color' => 'red'];

$this->load->library('mylib', $params);

5. ライブラリ内でCodeIgniterのリソースを利用。

 ※ユーザー定義ライブラリから設定ファイルやシステムライブラリを

  使用したい場合等。

(ex)プロパティとして使う変数を定義。

protected $CI;

(ex)コンストラクタでインスタンスを参照渡し

$this->CI =& get_instance();

(ex)コンストラクタで設定ファイルを読込。

$this->CI->config->load('custom', TRUE);

 

7. 関数から呼び出しているメソッドは「$this->method_name()」で

 取得可能。

(ex)check_form()からcheck_string()を呼び出す

public function check_form() {

      if($this->check_string($hoge) !== FALSE) {

      }

}

※尚、独自ライブラリで既存ネイティブライブラリの置換も可能。

※ネイティブライブラリを継承し処理を実装することも可能。

[参考サイト]

codeigniter.jp

pneskin2.nekoget.com

codeigniter.com

codeigniter.jp

symfoware.blog.fc2.com

techplay.jp

php-reference.com

www.ritolab.com