Symfoware

Symfowareについての考察blog

CodeIgniter 3 Helperの使い方(General Topics - Helper)

CodeIgniter User Guide

General TopicsのHelperについて調べてみます。
Helper



Helper Functions



ヘルパーは、名前から推測できる通りプログラムを便利にしてくれる
簡単な関数群のことです。

例えば、URL Helpersはリンク用の文字列を作るのに便利な関数、
Text Helpersは文字列のフォーマットを簡単に行うための関数、
Cookie Helpersはブラウザのcookieを扱いやすくする関数が定義されています。

ヘルパーは、オブジェクトではなく単純な関数として定義されています。
各々の関数は他の関数に依存しません。

CodeIgniterは、デフォルトでヘルパーをロードしません。
ヘルパーを使用するには、自分で使いたいヘルパーをロードする必要があります。
一度呼び出したヘルパーの関数はグローバルに読み込まれるため、
例えばコントローラーで呼び出したヘルパーは皇族で呼び出す
ビューでも使用することができます。

ヘルパー関数が記載されたプログラムファイルは

・system/helper
・application/helpers


上記のいづれかに配置します。

ヘルパーの呼び出しは、最初にapplication/helpersををチェックし、
存在しない場合はsystem/helperを検索します。




Loading a Helper



ヘルパーの呼び出しサンプルです。


  1. $this->load->helper('name');



ヘルパーが記載されたプログラムのファイル名を、拡張子「.php」を付けずに記載します。
拡張子に加え、「name_helper.php」の「_helper」の部分も省略可能です。

url_helper.phpというヘルパーを呼び出す場合はこうなります。


  1. $this->load->helper('url');




※ヘルパーを呼び出すと、グローバルな名前空間にヘルパーの関数名が書き込まれるため、
使用するときは注意が必要かと思います。

例えば、Aというコントローラーと、Bというコントローラー双方から
同じviewを呼び出している場合。

Aコントローラーでヘルパーをロード。
うっかりviewで、Aコントローラーでロードしたヘルパーの関数を使ってしまう。

Bコントローラーから呼び出された時は、そんなカンス無いよとエラーになる可能性がありますね。




Loading Multiple Helpers



複数のヘルパーを一気にロードしたい場合、引数をarrayにします。


  1. $this->load->helper(
  2.     array('helper1', 'helper2', 'helper3')
  3. );






Auto-loading Helpers



システム全体でよく使うヘルパーがある場合、事前に読み込んでもらったほうが楽です。

application/config/autoload.phpで自動的に読み込むヘルパーの指定が行えます。


  1. /*
  2. | -------------------------------------------------------------------
  3. | Auto-load Helper Files
  4. | -------------------------------------------------------------------
  5. | Prototype:
  6. |
  7. |    $autoload['helper'] = array('url', 'file');
  8. */
  9. $autoload['helper'] = array();








Using a Helper



ヘルパーは、オブジェクトではなく関数なので、呼び出した後は
関数名を書くだけで使用することができます。

ヘルパーにより導入された関数「anchor」をビューで使用する場合の例です。


  1. <?php echo anchor('blog/comments', 'Click Here');?>







“Extending” Helpers



CodeIgniterは、デフォルトで便利なヘルパーを準備しています。
このヘルパーの機能を拡張したい場合、通常配置するヘルパーのディレクトリ
application/helpers/
ここに、「MY_」というプリフィックス付きで、同名のヘルパーを定義します。

例えば、デフォルトで存在する「Array Helpe」を拡張したい場合、
「application/helpers/MY_array_helper.php」を作成。
プログラムを記載します。


  1. // any_in_array() はArray Helperに存在しない。
  2. // この関数は拡張
  3. function any_in_array($needle, $haystack) {
  4.     $needle = is_array($needle) ? $needle : array($needle);
  5.      foreach ($needle as $item) {
  6.         if (in_array($item, $haystack)) {
  7.             return TRUE;
  8.         }
  9.     }
  10.     return FALSE;
  11. }
  12. // random_element() はArray Helperに存在する。
  13. // 既存の関数を上書き(オーバーライド)したことになる。
  14. function random_element($array) {
  15.     shuffle($array);
  16.     return array_pop($array);
  17. }









Setting Your Own Prefix



ヘルパーを拡張するときの「MY_」という名前が気に入らない場合、
application/config/config.phpで変更できます。


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



ただし、「CI_」など既存で使われているプリフィックスは避けてください。




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


関連記事

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

  1. 2015/01/25(日) 12:00:52|
  2. PHP
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<CodeIgniter 3 Librariesの使い方(General Topics - Using CodeIgniter Libraries) | ホーム | CodeIgniter 3 Modelsの使い方(General Topics - Models)>>

コメント

コメントの投稿


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

トラックバック

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