CodeIgniter 機能拡張の注意点メモ

投稿者:isc_blog

CodeIgniter開発中に
既存のAPIで機能的に足りないのでいろいろ拡張することになるんですが
その際に「MY_」を付けます。

例えばForm_validationクラスを拡張してバリデーションにいろいろなバリエーション(w)をつけたい場合は
application/libraries/MY_Form_validation.php を作成してそのなかに
[php]
class MY_Form_validation extends CI_Form_validation {

/**
* Constructor
*/
public function __construct($rules = array())
{
parent::__construct($rules);
}

// ——————————————————————–

/**
* 電話番号チェック
*
* @access public
* @param string
* @return bool
*
*/
function phone($str)
{
if ($str == ”)
{
return TRUE;
}
return ( ! preg_match("/^\d{2,5}\-\d{1,4}\-\d{1,4}$/", $str)) ? FALSE : TRUE;
}
・・・
[/php]
こんな感じで作成します。

すると、CodeIgniterはこの「MY_」を付けたものを自動的に取り込んでくれて
あたかも Form_validationにあるかのように
[php]
$this->load->library(‘form_validation’);
[/php]
で読み込めて
[php]
$this->form_validation->set_rules(‘fax_no’, "FAX番号","trim|phone");
[/php]
みたいに使えるわけです。(上記の例は電話番号型になっているかチェックするルール設定です。)

しかし、今日それを「helper」でやろうと思って
application/helper/My_date_helper.php」を作成し・・・メソッドを書いて・・・
[php]
$this->load->helper(‘date’);
[/php]
も書いて・・・メソッドを呼ぶ処理を書きました。

・・・ダメ・・・使えてない・・・

ん~
どうなっているのかしばしソースチェック・・・
helperはクラスになっていなくてメソッドをそのまま書く感じになっているのでまた余計なことを考えて・・・・

結果、ファイル名が良くなかったみたいです。
My_date_helper.php」から 「MY_date_helper.php」 に変更したら・・・・

使えました!

解決するとなぁんだ!ってことなんですが。はまりそうでした。

2011年7月15日