CodeIgniterのヘルパー拡張を書く簡単なお仕事

CodeIgniterでURLを表示する場合、もちろんURLヘルパーを使用しています。

例えば、config.phpでconfig[‘base_url’]で設定したURLを表示するには、

 this->load->helper('url');
 echo base_url();
 

他の人がどうやっているのかは分かりませんが、jsファイルやcssファイルはやはり特定のディレクトリにまとめておきたい!ということで、CIをインストールしたディレクトリ直下に「css」「js」「image」ディレクトリをそれぞれ作成して対応しています。

URLで表わすと「http://example.jp/css/」のようになります。
もちろんURLヘルパーには、コレを出力する関数はありません。すると常にこんな風に書くことに。

 echo base_url().'css/';
 

あまり使用機会もない気がしますが、ちょっと面倒(尚且つblogのネタが欲しかった)なのでヘルパーを拡張してみました。
ヘルパーの拡張方法についてはヘルパ関数のページの下の方に書かれています。

でも、このページには既存のヘルパーを継承して使う方法が書いてない。。。今回はURLヘルパーのbase_url()を使いたいのだけれども。
手元にあるCodeIgniter徹底入門を眺めてみたら書いてありました。Webのドキュメントには無いのか?と確認してみるとライブラリの作成の真ん中辺りに書いてありました。

$CI =& get_instance();

Controller内でヘルパーやライブラリを使用する場合には、

 $this->load->helper('name');
 $this->load->library('name');
 

としますが、ヘルパーで内部的に呼び出すには

 $CI =& get_instance();
 $CI->load->helper('name');
 

でいけるとのこと。

んでは、早速書いてみますが、簡単な内容なので、、、関数書いただけですね。

/**
 * @access  public
 * @return  string
 */
function js_url(){
 $CI =& get_instance();
 $CI->load->helper('url');
return base_url().'js/';
 }
/**
 * @access  public
 * @return  string
 */
function css_url(){
 $CI =& get_instance();
 $CI->load->helper('url');

return base_url().'css/';
 }

/**
 * @access  public
 * @return  string
 */</p>

function image_url(){
 $CI =&amp; get_instance();
 $CI-&gt;load-&gt;helper('url');

return base_url().'image/';
 }
 //閉じタグは省略
 

動作テストもしましたが、問題なく動作しました!
結構簡単でしたね!

重要なのはget_instance()の部分だけでした。

CodeIgniterのヘルパー拡張を書く簡単なお仕事」への1件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。