Skip to content

fix user_guide_ja_src/source/general/helper.rst #3

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Oct 18, 2011
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
104 changes: 29 additions & 75 deletions user_guide_ja_src/source/general/helpers.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,9 @@

ヘルパーは、その名前のとおり、タスクの実行に役立つものです。各ヘルパー
のファイルは、特定分野についての関数のコレクションです。
リンクを作成するのを支援する URL ヘルパー
、フォームの要素を作成するのに役立つ フォームヘルパー 、
様々なテキスト整形処理を行う Text ヘルパー 、 クッキーを読み書きする
Cookie ヘルパー 、ファイルを取り扱うのに役立つ File ヘルパー
リンクを作成するのを支援する **URL ヘルパー** 、フォームの要素を作成するのに役立つ
フォームヘルパー 、様々なテキスト整形処理を行う **Text ヘルパー** 、
クッキーを読み書きする **Cookie ヘルパー** 、ファイルを取り扱うのに役立つ File ヘルパー
などがあります。

CodeIgniter の中の大部分のシステムとは違い、ヘルパーはオブジェクト指向
Expand All @@ -19,75 +18,53 @@ CodeIgniter はデフォルトでは、ヘルパーを読み込みません。
:doc:`コントローラ <../general/controllers>` と :doc:`ビュー
<../general/views>` の中でどこでも利用できます。

ヘルパーは通常は、 system/helpers ディレクトリまたは、
application/helpers に格納されています。CodeIgniter は
application/helpers ディレクトリを最初に認識します。このディレクトリが
ヘルパーは通常は、 **system/helpers** ディレクトリまたは、
**application/helpers** に格納されています。CodeIgniter は
**application/helpers** ディレクトリを最初に認識します。このディレクトリが
存在しない時や、読み込もうとするヘルパーがこのディレクトリの中にない場
合、CodeIgniter は代わりにグローバルな system/helpers
フォルダを探します。



ヘルパーの読み込み
==================

ヘルパーファイルを読み込むのは、次のようなメソッドを使う、非常に単純な
ものです:


::
ヘルパーファイルを読み込むのは、次のようなメソッドを使う、非常に単純なものです::

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

ここでの **name** は、.php 拡張子と "helper" を取り除いた、
ヘルパーのファイル名になります。

ここでの name は、ヘルパーの名前になります。 .php
ファイルの拡張子やファイル名についている"helper" をあらわす部分 [
訳注: ヘルパーの物理ファイル名の末尾には「_helper」というサフィックス
がついています ] は不要です。

たとえば、 url_helper.php というファイル名の URL ヘルパー
のファイルを読み込むには、次のようにします:


::
たとえば、 **url_helper.php** というファイル名の **URL ヘルパー**
のファイルを読み込むには、次のようにします::

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


ヘルパーは、利用する前にロードしさえすれば、コントローラのメソッドの中
の(良いやり方ではありませんが、 あるいはビューファイルの)どこでロード
してもかまいません。コントローラのコンストラクタでロードすれば、 どの
メソッドでも利用できるようになりますし、特定のメソッド内で必要な時だけ
読み込むこともできます。

.. note:: ヘルパーの読み込みメソッドは、値を返さないので、変数に返り値を代入しようとしないでください。例示したように使用するにとどめてください。


.. note:: ヘルパーの読み込みメソッドは、値を返さないので、
変数に返り値を代入しようとしないでください。例示したように使用するにとどめてください。

複数のヘルパーを読み込む
========================

一つ以上のヘルパーを読み込む必要がある場合は、次のように、配列の中で指
定することができます:


::
定することができます::

$this->load->helper( array('helper1', 'helper2', 'helper3') );




ヘルパーの自動読み込み
======================

あるヘルパーがアプリケーションでグローバルに必要とされることがわかった
時には、システムを初期化するときに自動読み込みするよう、CodeIgniter
に対して通知しておくことができます。 application/config/autoload.php
ファイルを開き、そこにある配列の autoload
にヘルパーを追加することで、そうすることが可能です。


に対して通知しておくことができます。 **application/config/autoload.php**
ファイルを開き、そこにある配列の autoload にヘルパーを追加することで、そうすることが可能です。

ヘルパーの使用
==============
Expand All @@ -96,94 +73,71 @@ application/helpers ディレクトリを最初に認識します。このディ
の関数を利用するように呼び出します。

たとえば、ビューのファイルで anchor()
関数を使ってリンクを生成するには、次のようにします:


::
関数を使ってリンクを生成するには、次のようにします::

<?php echo anchor('blog/comments', 'ここをクリック');?>


ここでの "ここをクリック" はリンクの名前になり、"blog/comments"
は、リンク先のコントローラ/メソッドの URI になります。



ヘルパー の "拡張"
==================

ヘルパーを "拡張" するには、 MY_
(この項目は、変更可能です。下記をご覧ください。) とプリフィックスを付
加し、それ以外は既存のヘルパーと全く同じ名前をつけて、
application/helpers/ フォルダにファイルを作成してください。
ヘルパーを "拡張" するには、 **MY_** (この項目は、変更可能です。下記をご覧ください。)
とプリフィックスを付加し、それ以外は既存のヘルパーと全く同じ名前をつけて、
**application/helpers/** フォルダにファイルを作成してください。

既存のヘルパーにいくつかの機能を追加する -
恐らくひとつかふたつの関数を追加するか、特定のヘルパー関数が
どのように動作するかを変更する - だけだとすると、ヘルパー全体をユーザ
バージョンに置き換えてしまうのは、やり過ぎです。こういう場合には、ヘル
パーを単に "拡張"する方がベターです。ヘルパー関数は、手続き型で、それ
ぞれ独立しており、 通例のプログラミング上の意味では、拡張(継承)できま
せん。ですので、ここでの"拡張"という言葉は、広い意味で使っています。
せん。ですので、ここでの"拡張"という言葉は、広い意味で使っています。
こういった意味で、ヘルパーが提供する関数を追加したり、もともとのヘルパ
ー関数がどのように動作するかを変更することができます。

たとえば、もともとの Array Helper を拡張するには、
application/helpers/ MY_array_helper.php という名前のファイルを作成し
、関数を追加または上書き(オーバーライド)します:


::
、関数を追加または上書き(オーバーライド)します::


// any_in_array() は、Array Helperの中にはありません。つまり、新しい関数を定義しています。
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() は、Array Helper に含まれています。つまり、もともとの関数を上書き(オーバーライド)しています
function random_element($array)
{
shuffle($array);
return array_pop($array);
}




独自のプリフィックスの設定
~~~~~~~~~~~~~~~~~~~~~~~~~~
--------------------------

ヘルパーを "拡張する" ためのファイル名のプリフィックスは、ライブラリや
コアクラスを拡張するときに使用するものと同じになります。独自のプリフィ
ックスをセットするには、 application/config/config.php
ファイルを開き、次の項目を探してください:


::
ックスをセットするには、 **application/config/config.php** ファイルを開き、次の項目を探してください::

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


CodeIgniter に組み込みの全ライブラリは、 CI_ というプリフィックスがつ
けられているので、これをユーザ指定のプリフィックスとして使用してはいけ
ないという事を覚えておいてください。


CodeIgniter に組み込みの全ライブラリは、 **CI_** というプリフィックスがつけられているので、
これをユーザ指定のプリフィックスとして使用してはいけないという事を覚えておいてください。

この後は、何をすればよいですか?
===============================

目次の中に、利用可能な全ヘルパーファイルのリストが書いてあるのがわかる
と思います。それぞれを閲覧して、何をするものなのかを見てみてください。