CodeIgniter補助関数helper詳細

3197 ワード

1.補助関数の概要
helper補助関数とは、名前の通り、様々な特定の任務を遂行するための一連の関数です。各補助関数ファイルは一連の機能セットでまとめられています。例えば、リンクのURL Helpersを作成してくれます。フォームを作成するForm Helpersと、テキストフォーマット出力のText Helpersと、cookieのCookie HelpersとファイルFile Helpersなどがあります。
ほとんどの他のシステムと違って、CodeIgniterの補助関数はクラスの方式で実現されていません。簡単なプログラムの機能です。各補助関数は特定のタスクを処理し、他の関数に依存する必要はない。
CodeIgniterはデフォルトでは補助関数ファイルをロードしていませんので、補助関数を使うなら、先に読み込まなければなりません。一旦ロードされると、サポート関数は大域的に利用できます。これらはcontrollerとviewsで使用できます。
補助関数ファイルは一般にsystem/helpersまたはappication/helpersフォルダに保存されます。CodeIgniterはまずappication/helpersで対応する補助関数ファイルを探します。ディレクトリが存在しない場合やディレクトリの下に対応する補助関数ファイルがない場合、CIはsystem/helpersの下の補助関数ファイルをロードします。
2.ロード補助関数
マウント補助関数は非常に簡単で、以下のようになります。

$this->load->helper('name');
nameは補助関数ファイルの名前です。
例えば、ファイルをロードするにはurl_という名前があります。helper.phpのURL Helperは、以下の文を採用することができます。

$this->load->helper('url');
補助関数はあなたのコントローラのどこにでもロードできます。ビューファイルにロードすることもできます。補助関数を使う前に彼らをロードしてください。補助関数は他の関数の前に自動的にロードされます。補助関数を使うところでその場で読み込むこともできます。
注意:補助関数ロード関数は値を返しませんので、変数に直接このように使ってもいいです。
3.複数の補助関数をロードする
一度に複数の補助関数をロードしたいなら、このようにしてもいいです。

$this->load->helper( array('helper1', 'helper2', 'helper3') );
4.自動マウント補助関数
あなたが望むなら、CodeIgniterが自動的に補助関数をロードすることができます。aplication/config/atoload.phpを開いて、自動ロード配列に補助関数を追加することで実現できます。
5.補助関数を使う
いったんロードしたら、補助関数ファイルを使いたいです。標準の関数でメソッドを呼び出して、中の関数を使うことができます。
例えば、アンチョー関数を使ってリンクを作成するには、ビュー(View)ファイルでこのようにしても良いです。

<?php echo anchor('blog/comments', 'Click Here');?>
ここの「Click Here」はリンクの名前で、「ブログ/comments」はリンクのURIです。
注意:補助関数の中の関数名はネーミング仕様にしたほうがいいです。複数の補助関数ファイルを同時にロードすると、同じ名前の関数があり、CIに空白ページ問題が発生します。これもPHP文法エラーです。
6.「拡張」補助関数
既存のHelpersを拡張したいなら、あなたのappication/helpers/ディレクトリの下に新しいhelperを作成してもいいです。新しいhelperの名前は「拡張」されたHelperの名前の先頭にMY_を追加します。これは配置可能です。下を参照してください。
もしあなたがやりたいのなら、既存のhelperに新しい機能を追加するだけです。例えば、新しい方法を一つか二つ追加したり、方法を修正したりします。自分のhelperを書き直す価値がない。この場合は、「拡張」の既存のhelperが望ましい。拡張という言葉はここではあまり適切ではありません。Helperの方法はプロセス的なものであり、離散的なものであり、伝統的な言語環境では拡張されません。しかし、CodeIgniterではhelperの方法を追加または修正することができます。
例えば、既存のAray Helperを拡張してファイルを作成するべきです。アラリhelper.phpと、overrideのいくつかの方法を追加または書き換えます。

// any_in_array() is not in the Array Helper, so it defines a new function
function any_in_array($needle, $haystack)
{
  $needle = (is_array($needle)) ? $needle : array($needle);
  foreach ($needle as $item)
  {
    if (in_array($item, $haystack))
    {
      return TRUE;
    }
    }
  return FALSE;
}
// random_element() is included in Array Helper, so it overrides the native function
function random_element($array)
{
  shuffle($array);
  return array_pop($array);
}
7.あなた自身のプレフィックス(Prefix)を設定します。
「拡張」helperに対してプレフィックスを付加するファイルもライブラリとコアクラスに対して拡張されています。カスタマイズされたプレフィックスを設定するために、aplication/config/config.phpファイルを開いて、次のような項目を見つけてください。

$config['subclass_prefix'] = 'MY_';
ここで注意してください。すべてのCodeIgniterが持っているライブラリはCI_として登録されています。このようなプレフィックス名ですので、CI_は使用しないでください。定義プレフィックスから