[GENERIC] Zend_Translate:
[zend.git] / documentation / manual / ja / module_specs / Zend_View-Helpers.xml
blob7f19fc647343d6f8ca64afb8f05d965d7873b7a0
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- Reviewed: no -->
3 <!-- EN-Revision: 21740 -->
4 <sect1 id="zend.view.helpers" xmlns:xi="http://www.w3.org/2001/XInclude">
5     <title>ビューヘルパー</title>
7     <para>
8         ビュースクリプトの中で、複雑な関数を繰り返し実行しなければならないこともあるでしょう
9         (例えば日付のフォーマット、フォーム要素の作成、リンクの作成など)。
10         このような作業を行うために、ヘルパークラスを使用できます。
11     </para>
13     <para>
14         ヘルパーの正体は、単なるクラスです。たとえば 'fooBar' という名前のヘルパーを使用するとしましょう。
15         デフォルトでは、クラス名の先頭には 'Zend_View_Helper_'
16         がつきます (ヘルパーのパスを設定する際に、これは独自のものに変更できます)。
17         そしてクラス名の最後の部分がヘルパーの名前となります。
18         このとき、単語の先頭は大文字にしなければなりません。つまり、
19         ヘルパーのクラス名は <classname>Zend_View_Helper_FooBar</classname>
20         となります。このクラスには、最低限ヘルパー名と同じ名前 (camelCase 形式にしたもの)
21         のメソッド <methodname>fooBar()</methodname> が含まれていなければなりません。
22     </para>
24     <note>
25         <title>大文字小文字の扱い</title>
26         <para>
27             ヘルパー名は常に camelCase 形式となります。
28             つまり、最初は常に小文字となります。
29             クラス名は MixedCase 形式ですが、実際に実行されるメソッドは
30             camelCase 形式となります。
31         </para>
32     </note>
34     <note>
35         <title>デフォルトのヘルパーのパス</title>
37         <para>
38             デフォルトのヘルパーのパスは常に Zend Framework
39             のビューヘルパーのパス、すなわち 'Zend/View/Helper/' となります。
40             <methodname>setHelperPath()</methodname> をコールして既存のパスを上書きしても、
41             このパスだけは残ります。これにより、
42             デフォルトのヘルパーは常に動作することが保証されます。
43         </para>
44     </note>
46     <para>
47         ビュースクリプト内でヘルパーを使用するには、
48         <command>$this->helperName()</command> をコールします。これをコールすると、裏側では
49         <classname>Zend_View</classname> が <classname>Zend_View_Helper_HelperName</classname> クラスを読み込み、
50         そのクラスのインスタンスを作成して <methodname>helperName()</methodname> メソッドをコールします。
51         オブジェクトのインスタンスは <classname>Zend_View</classname> インスタンスの中に残り続け、
52         後で <command>$this->helperName()</command> がコールされたときには再利用されます。
53     </para>
55     <sect2 id="zend.view.helpers.initial">
56         <title>付属のヘルパー</title>
58         <para>
59             <classname>Zend_View</classname> には、はじめからいくつかのヘルパークラスが付属しています。
60             これらのほとんどはフォーム要素の生成に関するもので、
61             適切なエスケープ処理を自動的に行います。
62             さらに、ルートにもとづいた <acronym>URL</acronym> と HTML の一覧を作成したり、
63             変数を宣言したりするものもあります。
64             現在付属しているヘルパーは、次のとおりです。
65         </para>
67         <itemizedlist>
69             <listitem><para>
70                 <methodname>declareVars():</methodname>
71                 <methodname>strictVars()</methodname> を使用する際に同時に使用します。
72                 このヘルパーを使用すると、テンプレート変数を宣言できます。
73                 この変数は、すでにビュースクリプトで設定されているものでもいないものでもかまいません。
74                 また、同時にデフォルト値も設定します。
75                 このメソッドへの引数として配列を渡すとデフォルト値を設定します。
76                 それ以外の場合は、もしその変数が存在しない場合は空文字列を設定します。
77             </para></listitem>
79             <listitem><para>
80                 <methodname>fieldset($name, $content, $attribs):</methodname>
81                 <acronym>XHTML</acronym> の fieldset を作成します。<varname>$attribs</varname> に
82                 'legend' というキーが含まれる場合、その値をフィールドセットの説明として使用します。
83                 フィールドセットで囲む内容は、このヘルパーに渡した
84                 <varname>$content</varname> です。
85             </para></listitem>
87             <listitem><para>
88                 <methodname>form($name, $attribs, $content):</methodname>
89                 <acronym>XHTML</acronym> の form を作成します。すべての <varname>$attribs</varname>
90                 はエスケープされ、form タグの <acronym>XHTML</acronym> 属性としてレンダリングされます。
91                 <varname>$content</varname> が存在してその値が <constant>FALSE</constant> 以外の場合は、
92                 その内容がフォームの開始タグと終了タグの間にレンダリングされます。
93                 <varname>$content</varname> が <constant>FALSE</constant> (既定値) の場合は、
94                 フォームの開始タグのみを作成します。
95             </para></listitem>
97             <listitem><para>
98                 <methodname>formButton($name, $value, $attribs):</methodname> &lt;button /&gt; 要素を作成します。
99             </para></listitem>
101             <listitem>
102                 <para>
103                     <methodname>formCheckbox($name, $value, $attribs,
104                         $options):</methodname>
105                     &lt;input type="checkbox" /&gt; 要素を作成します。
106                 </para>
108                 <para>
109                     デフォルトでは、$value を指定せず $options
110                     が存在しなかった場合は、未チェックの値として '0'
111                     そしてチェック状態の値として '1' を使用します。
112                     $value が渡されたけれど $options が存在しなかった場合は、
113                     渡された値をチェック状態の値とみなします。
114                 </para>
116                 <para>
117                     $options は配列でなければなりません。
118                     数値添字形式の配列の場合は、最初の要素がチェック状態の値となり、
119                     その次の要素が未チェック状態の値となります。
120                     3 番目以降の要素の内容は無視されます。
121                     キー 'checked' および 'unChecked' を持つ連想配列を指定することもできます。
122                 </para>
124                 <para>
125                     $options を渡した場合は、$value
126                     が「チェック状態の値」と一致した場合にその要素がチェック状態だとみなされます。
127                     チェック状態あるいは未チェック状態は、
128                     属性 'checked' に boolean 値を渡して指定することもできます。
129                 </para>
131                 <para>
132                     これらの内容を簡単にまとめた例を示します。
133                 </para>
135                 <programlisting language="php"><![CDATA[
136 // '1' および '0' でチェック状態と未チェック状態を表します。これはチェックされていません
137 echo $this->formCheckbox('foo');
139 // '1' および '0' でチェック状態と未チェック状態を表します。これはチェックされています
140 echo $this->formCheckbox('foo', null, array('checked' => true));
142 // 'bar' および '0' でチェック状態と未チェック状態を表します。これはチェックされていません
143 echo $this->formCheckbox('foo', 'bar');
145 // 'bar' および '0' でチェック状態と未チェック状態を表します。これはチェックされています
146 echo $this->formCheckbox('foo', 'bar', array('checked' => true));
148 // 'bar' および 'baz' でチェック状態と未チェック状態を表します。これはチェックされていません
149 echo $this->formCheckbox('foo', null, null, array('bar', 'baz'));
151 // 'bar' および 'baz' でチェック状態と未チェック状態を表します。これはチェックされていません
152 echo $this->formCheckbox('foo', null, null, array(
153     'checked' => 'bar',
154     'unChecked' => 'baz'
157 // 'bar' および 'baz' でチェック状態と未チェック状態を表します。これはチェックされています
158 echo $this->formCheckbox('foo', 'bar', null, array('bar', 'baz'));
159 echo $this->formCheckbox('foo',
160                          null,
161                          array('checked' => true),
162                          array('bar', 'baz'));
164 // 'bar' および 'baz' でチェック状態と未チェック状態を表します。これはチェックされていません
165 echo $this->formCheckbox('foo', 'baz', null, array('bar', 'baz'));
166 echo $this->formCheckbox('foo',
167                          null,
168                          array('checked' => false),
169                          array('bar', 'baz'));
170 ]]></programlisting>
172                 <para>
173                     どの場合についても、マークアップの先頭に hidden
174                     要素を追加してそこに「未チェック状態」を表す値を保持します。
175                     そうすることで、仮に未チェック状態であったとしても
176                     フォームから何らかの値が返されるようになるのです。
177                 </para>
178             </listitem>
180             <listitem>
181                 <para>
182                     <methodname>formErrors($errors, $options):</methodname>
183                     エラーの表示用に、<acronym>XHTML</acronym> の順序なしリストを作成します。
184                     <varname>$errors</varname> は、文字列あるいは文字列の配列となります。
185                     <varname>$options</varname> は、リストの開始タグの属性として設定したい内容です。
186                 </para>
188                 <para>
189                     エラー出力の開始時、終了時、そして各エラーの区切りとして使用する
190                     コンテンツを指定することもできます。
191                     そのためにはヘルパーのこれらのメソッドをコールします。
192                 </para>
194                 <itemizedlist>
195                     <listitem><para>
196                             <methodname>setElementStart($string)</methodname>;
197                             デフォルトは '&lt;ul class="errors"%s"&gt;&lt;li&gt;'
198                             で、%s の部分には <varname>$options</varname>
199                             で指定した属性が入ります。
200                     </para></listitem>
202                     <listitem><para>
203                             <methodname>setElementSeparator($string)</methodname>;
204                             デフォルトは '&lt;/li&gt;&lt;li&gt;' です。
205                     </para></listitem>
207                     <listitem><para>
208                             <methodname>setElementEnd($string)</methodname>;
209                             デフォルトは '&lt;/li&gt;&lt;/ul&gt;' です。
210                     </para></listitem>
211                 </itemizedlist>
212             </listitem>
214             <listitem><para>
215                 <methodname>formFile($name, $attribs):</methodname>
216                 type="file" /&gt; 要素を作成します。
217             </para></listitem>
219             <listitem><para>
220                 <methodname>formHidden($name, $value, $attribs):</methodname> &lt;input
221                 type="hidden" /&gt; 要素を作成します。
222             </para></listitem>
224             <listitem><para>
225                 <methodname>formLabel($name, $value, $attribs):</methodname>
226                 &lt;label&gt; 要素を作成します。<property>for</property> 属性の値は
227                 <varname>$name</varname> に、そしてラベルのテキストは
228                 <varname>$value</varname> になります。
229                 <property>attribs</property> に <emphasis>disable</emphasis>
230                 を渡すと、結果を何も返しません。
231             </para></listitem>
233             <listitem><para>
234                 <methodname>formMultiCheckbox($name, $value, $attribs, $options,
235                     $listsep):</methodname> チェックボックスのリストを作成します。
236                 <varname>$options</varname> は連想配列で、任意の深さにできます。
237                 <varname>$value</varname> は単一の値か複数の値の配列で、これが
238                 <varname>$options</varname> 配列のキーにマッチします。
239                 <varname>$listsep</varname> は、デフォルトでは HTML の改行
240                 ("&lt;br /&gt;") です。デフォルトでは、
241                 この要素は配列として扱われます。
242                 つまり、すべてのチェックボックスは同じ名前となり、
243                 入力内容は配列形式で送信されます。
244             </para></listitem>
246             <listitem><para>
247                 <methodname>formPassword($name, $value, $attribs):</methodname> &lt;input
248                 type="password" /&gt; 要素を作成します。
249             </para></listitem>
251             <listitem><para>
252                 <methodname>formRadio($name, $value, $attribs, $options):</methodname>
253                 一連の &lt;input type="radio" /&gt; 要素を、
254                 $options の要素ごとに作成します。$options は、
255                 ラジオボタンの値をキー、ラベルを値とする配列となります。
256                 $value はラジオボタンの初期選択状態を設定します。
257             </para></listitem>
259             <listitem><para>
260                 <methodname>formReset($name, $value, $attribs):</methodname> &lt;input
261                 type="reset" /&gt; 要素を作成します。
262             </para></listitem>
264             <listitem><para>
265                 <methodname>formSelect($name, $value, $attribs, $options):</methodname>
266                 &lt;select&gt;...&lt;/select&gt; ブロックを作成します。
267                 $options の要素ごとに &lt;option&gt; を作成します。
268                 $options は、選択肢の値をキー、
269                 ラベルを値とする配列となります。$value
270                 は初期選択状態を設定します。
271             </para></listitem>
273             <listitem><para>
274                 <methodname>formSubmit($name, $value, $attribs):</methodname> &lt;input
275                 type="submit" /&gt; 要素を作成します。
276             </para></listitem>
278             <listitem><para>
279                 <methodname>formText($name, $value, $attribs):</methodname> &lt;input
280                 type="text" /&gt; 要素を作成します。
281             </para></listitem>
283             <listitem><para>
284                 <methodname>formTextarea($name, $value, $attribs):</methodname>
285                 &lt;textarea&gt;...&lt;/textarea&gt; ブロックを作成します。
286             </para></listitem>
288             <listitem><para>
289                 <methodname>url($urlOptions, $name, $reset):</methodname>
290                 指定したルートにもとづく <acronym>URL</acronym> 文字列を作成します。
291                 <varname>$urlOptions</varname> は、そのルートで使用する
292                 キー/値 のペアの配列となります。
293             </para></listitem>
295             <listitem><para>
296                 <methodname>htmlList($items, $ordered, $attribs, $escape):</methodname>
297                 <varname>$items</varname> で渡した内容をもとに
298                 順序つきリストあるいは順序なしリストを作成します。
299                 <varname>$items</varname> が多次元配列の場合は、入れ子状のリストとなります。
300                 <varname>$escape</varname> フラグを <constant>TRUE</constant> (既定値) にすると、
301                 各項目はビューオブジェクトに登録されているエスケープ方式でエスケープされます。
302                 リスト内でマークアップを行いたい場合は <constant>FALSE</constant> を渡します。
303             </para></listitem>
305         </itemizedlist>
307         <para>
308             これらをビュースクリプト内で使用するのはとても簡単です。
309             以下に例を示します。ただ単に、ヘルパーをコールするだけでよいことに注意しましょう。
310             読み込みやインスタンス作成は、必要に応じて自動的に行われます。
311         </para>
313         <programlisting language="php"><![CDATA[
314 // ビュースクリプト内では、$this は Zend_View のインスタンスを指します。
316 // select の選択肢を、変数 $countries に
317 // array('us' => 'United States', 'il' => 'Israel', 'de' => 'Germany')
318 // として設定済みであることにします。
320 <form action="action.php" method="post">
321     <p><label>メールアドレス:
322 <?php echo $this->formText('email', 'you@example.com', array('size' => 32)) ?>
323     </label></p>
324     <p><label>国:
325 <?php echo $this->formSelect('country', 'us', null, $this->countries) ?>
326     </label></p>
327     <p><label>メールを受け取りますか?
328 <?php echo $this->formCheckbox('opt_in', 'yes', null, array('yes', 'no')) ?>
329     </label></p>
330 </form>
331 ]]></programlisting>
333         <para>
334             ビュースクリプトの出力結果は、次のようになります。
335         </para>
337         <programlisting language="php"><![CDATA[
338 <form action="action.php" method="post">
339     <p><label>メールアドレス:
340         <input type="text" name="email" value="you@example.com" size="32" />
341     </label></p>
342     <p><label>国:
343         <select name="country">
344             <option value="us" selected="selected">United States</option>
345             <option value="il">Israel</option>
346             <option value="de">Germany</option>
347         </select>
348     </label></p>
349     <p><label>メールを受け取りますか?
350         <input type="hidden" name="opt_in" value="no" />
351         <input type="checkbox" name="opt_in" value="yes" checked="checked" />
352     </label></p>
353 </form>
354 ]]></programlisting>
356         <xi:include href="Zend_View-Helpers-Action.xml" />
357         <xi:include href="Zend_View-Helpers-BaseUrl.xml" />
358         <xi:include href="Zend_View-Helpers-Currency.xml">
359             <xi:fallback><xi:include href="../../en/module_specs/Zend_View-Helpers-Currency.xml" /></xi:fallback>
360         </xi:include>
361         <xi:include href="Zend_View-Helpers-Cycle.xml" />
362         <xi:include href="Zend_View-Helpers-Partial.xml" />
363         <xi:include href="Zend_View-Helpers-Placeholder.xml" />
364         <xi:include href="Zend_View-Helpers-Doctype.xml" />
365         <xi:include href="Zend_View-Helpers-HeadLink.xml" />
366         <xi:include href="Zend_View-Helpers-HeadMeta.xml" />
367         <xi:include href="Zend_View-Helpers-HeadScript.xml" />
368         <xi:include href="Zend_View-Helpers-HeadStyle.xml" />
369         <xi:include href="Zend_View-Helpers-HeadTitle.xml" />
370         <xi:include href="Zend_View-Helpers-HtmlObject.xml" />
371         <xi:include href="Zend_View-Helpers-InlineScript.xml" />
372         <xi:include href="Zend_View-Helpers-Json.xml" />
373         <xi:include href="Zend_View-Helpers-Navigation.xml">
374             <xi:fallback><xi:include href="../../en/module_specs/Zend_View-Helpers-Navigation.xml" /></xi:fallback>
375         </xi:include>
376         <xi:include href="Zend_View-Helpers-Translate.xml" />
377     </sect2>
379     <sect2 id="zend.view.helpers.paths">
380         <title>ヘルパーのパス</title>
382         <para>
383             ビュースクリプトと同様、
384             <classname>Zend_View</classname> がヘルパークラスを探すパスをコントローラから積み重ねて指定できます。
385             デフォルトでは、<classname>Zend_View</classname> は "Zend/View/Helper/*" からヘルパークラスを探します。
386             <classname>Zend_View</classname> に別の場所を探すように指定するには
387             <methodname>setHelperPath()</methodname> および <methodname>addHelperPath()</methodname> メソッドを使用します。
388             さらに、クラスプレフィックスを指定することもできます。
389             これにより、ヘルパークラスに名前空間を設定できるようになります。
390             デフォルトでクラスプレフィックスを指定しなかった場合は、
391             'Zend_View_Helper_' であると見なされます。
392         </para>
394         <programlisting language="php"><![CDATA[
395 $view = new Zend_View();
397 // パスを /path/to/more/helpers 、プレフィックスを 'My_View_Helper' と設定します
398 $view->setHelperPath('/path/to/more/helpers', 'My_View_Helper');
399 ]]></programlisting>
401         <para>
402             <methodname>addHelperPath()</methodname> メソッドを使用すると、検索パスを「積み重ねる」
403             ことができます。これを使用すると、<classname>Zend_View</classname>
404             は一番最後に追加されたパスからヘルパークラスを探し始めます。
405             これにより、付属しているヘルパーの内容を上書きしたり、
406             新しいヘルパーを追加したりすることができるようになります。
407         </para>
409         <programlisting language="php"><![CDATA[
410 $view = new Zend_View();
411 // /path/to/some/helpers をクラスプレフィックス 'My_View_Helper' で追加します
412 $view->addHelperPath('/path/to/some/helpers', 'My_View_Helper');
413 // /other/path/to/helpers をクラスプレフィックス 'Your_View_Helper' で追加します
414 $view->addHelperPath('/other/path/to/helpers', 'Your_View_Helper');
416 // $this->helperName() をコールすると、Zend_View は
417 // まず最初に "/path/to/some/helpers/HelperName" で
418 // "Your_View_Helper_HelperName" という名前のクラスを探し、
419 // 次に "/other/path/to/helpers/HelperName.php" で
420 // "My_View_Helper_HelperName" という名前のクラスを探し、
421 // そして最後に "Zend/View/Helpers/HelperName.php" で
422 // "Zend_View_Helper_HelperName" という名前のクラスを探します。
423 ]]></programlisting>
425     </sect2>
427     <sect2 id="zend.view.helpers.custom">
428         <title>独自のヘルパーを書く</title>
430         <para>
431             独自のヘルパーを書くのは簡単です。以下の規則に従ってください。
432         </para>
434         <itemizedlist>
436             <listitem><para>
437                 絶対条件というわけではありませんが、ヘルパーを作成する際には
438                 <classname>Zend_View_Helper_Interface</classname> を実装するか
439                 <classname>Zend_View_Helper_Abstract</classname> を継承することを推奨します。
440                 1.6.0 以降、これらには <methodname>setView()</methodname> メソッドが定義されています。
441                 しかし、将来のリリースでは Strategy パターンを実装することを検討しており、
442                 以下に示す命名規約の多くを単純化する予定です。
443                 今のうちにこのようにしておくと、
444                 将来のバージョンでもあなたの書いたコードがそのまま動くようになるでしょう。
445             </para></listitem>
447             <listitem><para>
448                 クラス名は、少なくとも最後はヘルパーの名前と同じである必要があります。
449                 MixedCaps 方式を使用します。たとえば
450                 "specialPurpose" という名前のヘルパーを作成した場合は、そのクラス名には
451                 最低限 "SpecialPurpose" が含まれている必要があります。
452                 このクラス名にプレフィックスを指定できます。
453                 プレフィックスの一部に 'View_Helper' を含めることを推奨します。たとえば
454                 "My_View_Helper_SpecialPurpose" のようになります
455                 (<methodname>addHelperPath()</methodname> や
456                 <methodname>setHelperPath()</methodname> にはプレフィックスを指定する必要があります。
457                 最後のアンダースコアは含めても含めなくてもかまいません)。
458             </para></listitem>
460             <listitem><para>
461                 クラスは、ヘルパーと同じ名前の public メソッドを持っている必要があります。
462                 テンプレートが "$this->specialPurpose()" をコールした際に、
463                 このメソッドがコールされます。"specialPurpose" ヘルパーの例では、
464                 "public function specialPurpose()" というメソッドが必要です。
465             </para></listitem>
467             <listitem><para>
468                 一般に、クラスでは echo や print その他の出力を行ってはいけません。
469                 その代わりに、print あるいは echo される内容を返します。
470                 返り値は、適切にエスケープしなければなりません。
471             </para></listitem>
473             <listitem><para>
474                 クラスは、ヘルパークラスと同じ名前のファイルに作成しなければなりません。
475                 再び "specialPurpose" ヘルパーを例にとると、ファイル名は
476                 "SpecialPurpose.php" でなければなりません。
477             </para></listitem>
478         </itemizedlist>
480         <para>
481             指定したヘルパーパスのどこかにヘルパークラスのファイルを配置すると、
482             <classname>Zend_View</classname> は自動的にそれを読み込んでインスタンスを作成し、
483             必要に応じて実行します。
484         </para>
486         <para>
487             <classname>SpecialPurpose</classname> ヘルパーのコードの例を示します。
488         </para>
490         <programlisting language="php"><![CDATA[
491 class My_View_Helper_SpecialPurpose extends Zend_View_Helper_Abstract
493     protected $_count = 0;
494     public function specialPurpose()
495     {
496         $this->_count++;
497         $output = "'The Jerk' を {$this->_count} 回見ました。";
498         return htmlspecialchars($output);
499     }
501 ]]></programlisting>
503         <para>
504             そして、ビュースクリプト内で <classname>SpecialPurpose</classname>
505             ヘルパーを必要なだけコールします。いちどインスタンスが作成された後は、
506             <classname>Zend_View</classname> インスタンスの中でそれが持続します。
507         </para>
509         <programlisting language="php"><![CDATA[
510 // ビュースクリプト内では、$this は Zend_View インスタンスを指すことを覚えておきましょう。
511 echo $this->specialPurpose();
512 echo $this->specialPurpose();
513 echo $this->specialPurpose();
514 ]]></programlisting>
516         <para>
517             出力結果は、次のようになります。
518         </para>
519         <programlisting language="php"><![CDATA[
520 'The Jerk' を 1 回見ました。
521 'The Jerk' を 2 回見ました。
522 'The Jerk' を 3 回見ました。
523 ]]></programlisting>
525         <para>
526             時には <classname>Zend_View</classname> オブジェクトを使用したくなることもあるでしょう。
527             たとえば登録されているエンコーディングを使用する必要があったり、
528             ヘルパー内で別のビュースクリプトをレンダリングしたくなったりといった場合です。
529             ビューオブジェクトにアクセスするには、ヘルパークラス内で次のような
530             <methodname>setView($view)</methodname> メソッドを定義しなければなりません。
531         </para>
533         <programlisting language="php"><![CDATA[
534 class My_View_Helper_ScriptPath
536     public $view;
538     public function setView(Zend_View_Interface $view)
539     {
540         $this->view = $view;
541     }
543     public function scriptPath($script)
544     {
545         return $this->view->getScriptPath($script);
546     }
548 ]]></programlisting>
550         <para>
551             ヘルパークラスで <methodname>setView()</methodname> メソッドを定義しておくと、
552             最初にインスタンスが作成される際に自動的にこのメソッドがコールされ、
553             現在のビューオブジェクトが引数として渡されます。
554             渡されたオブジェクトをクラス内でどのように管理するかは特に決まっていません。
555             お好みの方法で管理してください。
556         </para>
558         <para>
559             <classname>Zend_View_Helper_Abstract</classname> を継承する場合は、
560             このメソッドはすでに定義済みであるため定義する必要はありません。
561         </para>
562     </sect2>
564     <sect2 id="zend.view.helpers.registering-concrete">
565         <title>Registering Concrete Helpers</title>
567         <para>
568             Sometimes it is convenient to instantiate a view helper, and then register it with the
569             view. As of version 1.10.0, this is now possible using the
570             <methodname>registerHelper()</methodname> method, which expects two arguments: the
571             helper object, and the name by which it will be registered.
572         </para>
574         <programlisting language="php"><![CDATA[
575 $helper = new My_Helper_Foo();
576 // ...do some configuration or dependency injection...
578 $view->registerHelper($helper, 'foo');
579 ]]></programlisting>
581         <para>
582             If the helper has a <methodname>setView()</methodname> method, the view object will call
583             this and inject itself into the helper on registration.
584         </para>
586         <note>
587             <title>Helper name should match a method</title>
589             <para>
590                 The second argument to <methodname>registerHelper()</methodname> is the name of the
591                 helper. A corresponding method name should exist in the helper; otherwise,
592                 <classname>Zend_View</classname> will call a non-existent method when invoking the
593                 helper, raising a fatal <acronym>PHP</acronym> error.
594             </para>
595         </note>
596     </sect2>
597 </sect1>
598 <!--
599 vim:se ts=4 sw=4 et: