[GENERIC] Zend_Translate:
[zend.git] / documentation / manual / ja / module_specs / Zend_Json-Server.xml
blob077b425789370b20754499133736ba32d67bbfb6
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- Reviewed: no -->
3 <!-- EN-Revision: 20792 -->
4 <sect1 id="zend.json.server">
5     <title>Zend_Json_Server - JSON-RPCサーバー</title>
7     <para>
8         <classname>Zend_Json_Server</classname>は<ulink
9             url="http://groups.google.com/group/json-rpc/">JSON-RPC</ulink>
10         サーバー実装です。それは
11         <ulink url="http://groups.google.com/group/json-rpc/web/json-rpc-1-2-proposal">バージョン 2 仕様</ulink>
12         と同様に
13         <ulink url="http://json-rpc.org/wiki/specification">JSON-RPCバージョン 1 仕様</ulink>
14         の両方をサポートします;
15         それは、サービスのメタデータをサービス利用者に提供するために、
16         <ulink url="http://groups.google.com/group/json-schema/web/service-mapping-description-proposal">サービス
17             マッピング定義 (SMD) 仕様</ulink>の
18         <acronym>PHP</acronym>実装を提供します。
19     </para>
21     <para>
22         JSON-RPCは、軽量なリモート・プロシージャ呼出しプロトコルです。
23         そのプロトコルでは、<acronym>JSON</acronym>をそのメッセージのエンベロープのために利用します。
24         このJSON-RPC実装は<acronym>PHP</acronym>の<ulink
25             url="http://www.php.net/manual/ja/class.soapserver.php">SoapServer</ulink>
26         <acronym>API</acronym>に従います。
27         このことにより典型的状況では、簡単に下記のことができます:
28     </para>
30     <itemizedlist>
31         <listitem><para>サーバーオブジェクトのインスタンス化</para></listitem>
32         <listitem><para>一つ以上の関数やクラス/オブジェクトをサーバーオブジェクトに配置</para></listitem>
33         <listitem><para>リクエストの handle()</para></listitem>
34     </itemizedlist>
36     <para>
37         <classname>Zend_Json_Server</classname>は
38         どんな付属のクラスまたは関数でも<xref linkend="zend.server.reflection" />Reflectionを実行することを利用します。
39         また、SMDと実施するメソッド呼び出しのシグナチュアとの両方をビルドするためにその情報を使います。
40         そのように、それはどんな付属の関数またはクラス・メソッドでも完全な<acronym>PHP</acronym> docblock文書を最小限、持つ命令文です:
41     </para>
43     <itemizedlist>
44         <listitem><para>パラメータとそれらで期待される変数の型の全て</para></listitem>
45         <listitem><para>戻り値変数の型</para></listitem>
46     </itemizedlist>
48     <para>
49         <classname>Zend_Json_Server</classname>はこの時だけPOSTリクエストをリスンします;
50         幸いにも、この文書の時点では、ワイルドなJSON-RPC実装の大半は、
51         そのようにリクエストをポストするだけです。
52         次の例で示されるように、
53         リクエストの処理だけではなく、サービスSMDの配信の両方で
54         同じサーバーエンドポイントを簡単に利用できるようにします。
55     </para>
57     <example id="zend.json.server.usage">
58         <title>Zend_Json_Server利用方法</title>
60         <para>
61             最初に、JSON-RPCサーバーによって公開したいクラスを定義しましょう。
62             そのクラスを 'Calculator' とし、
63             'add'、'subtract'、'multiply' 及び 'divide'メソッドを定義します:
64         </para>
66         <programlisting language="php"><![CDATA[
67 /**
68  * Calculator - JSON-RPCを通じて公開するサンプル・クラス。
69  */
70 class Calculator
72     /**
73      * 2つの変数の合計を返します
74      *
75      * @param  int $x
76      * @param  int $y
77      * @return int
78      */
79     public function add($x, $y)
80     {
81         return $x + $y;
82     }
84     /**
85      * 2つの変数の差を返します
86      *
87      * @param  int $x
88      * @param  int $y
89      * @return int
90      */
91     public function subtract($x, $y)
92     {
93         return $x - $y;
94     }
96     /**
97      * 2つの変数の積を返します
98      *
99      * @param  int $x
100      * @param  int $y
101      * @return int
102      */
103     public function multiply($x, $y)
104     {
105         return $x * $y;
106     }
108     /**
109      * 2つの変数の除算結果を返します
110      *
111      * @param  int $x
112      * @param  int $y
113      * @return float
114      */
115     public function divide($x, $y)
116     {
117         return $x / $y;
118     }
120 ]]></programlisting>
122         <para>
123             それぞれのメソッドで戻り値のための項目だけでなく、
124             それぞれのパラメータとその型を示す項目を持つdocblockを持つことに注意してください。
125             それに関しては、Zend Frameworkで<classname>Zend_Json_Server</classname>や
126             その他のいずれのサーバー構成要素を利用するときでも、これは<emphasis>絶対重要</emphasis>です。
127         </para>
129         <para>
130             それでは、リクエストを処理するためのスクリプトを作成します:
131         </para>
133         <programlisting language="php"><![CDATA[
134 $server = new Zend_Json_Server();
136 // どのような機能が利用できるか示します:
137 $server->setClass('Calculator');
139 //リクエストを処理:
140 $server->handle();
141 ]]></programlisting>
143         <para>
144             しかしながら、JSON-RPCクライアントがメソッドを自動検出できるように、
145             SMDを返す問題を対象にしません。
146             それは、<acronym>HTTP</acronym>がメソッドをリクエストすることを確定し、
147             それから、若干のサーバー・メタデータを指定することによって達成されます:
148         </para>
150         <programlisting language="php"><![CDATA[
151 $server = new Zend_Json_Server();
152 $server->setClass('Calculator');
154 if ('GET' == $_SERVER['REQUEST_METHOD']) {
155     // URLのエンドポイント及び使用するJSON-RPCのバージョンを示します:
156     $server->setTarget('/json-rpc.php')
157            ->setEnvelope(Zend_Json_Server_Smd::ENV_JSONRPC_2);
159     // SMDをつかみます
160     $smd = $server->getServiceMap();
162     // クライアントにSMDを返します
163     header('Content-Type: application/json');
164     echo $smd;
165     return;
168 $server->handle();
169 ]]></programlisting>
171         <para>
172             DojoツールキットでJSON-RPCサーバーを利用するなら、
173             その2つがきちんと相互作用することを確実にするために、
174             特別な互換性フラグをセットする必要もあります:
175         </para>
177         <programlisting language="php"><![CDATA[
178 $server = new Zend_Json_Server();
179 $server->setClass('Calculator');
181 if ('GET' == $_SERVER['REQUEST_METHOD']) {
182     $server->setTarget('/json-rpc.php')
183            ->setEnvelope(Zend_Json_Server_Smd::ENV_JSONRPC_2);
184     $smd = $server->getServiceMap();
186     // Dojo互換を設定します:
187     $smd->setDojoCompatible(true);
189     header('Content-Type: application/json');
190     echo $smd;
191     return;
194 $server->handle();
195 ]]></programlisting>
196     </example>
198     <sect2 id="zend.json.server.details">
199         <title>高度な詳細</title>
201         <para>
202             <classname>Zend_Json_Server</classname>の機能の大半が
203             <xref linkend="zend.json.server.usage" />で説明されており、
204             より高度な機能を利用できます。
205         </para>
207         <sect3 id="zend.json.server.details.zendjsonserver">
208             <title>Zend_Json_Server</title>
210             <para>
211                 <classname>Zend_Json_Server</classname>は、
212                 JSON-RPCを提供する中心的なクラスです;
213                 それはすべてのリクエストを扱い、
214                 レスポンス・ペイロードを返します。
215                 下記のメソッドがあります:
216             </para>
218             <itemizedlist>
219                 <listitem><para><methodname>addFunction($function)</methodname>:
220                     サーバーに関連するユーザーランド関数を指定します。
221                 </para></listitem>
222                 <listitem><para><methodname>setClass($class)</methodname>:
223                     サーバーに関連するクラスまたはオブジェクトを指定します;
224                     そのアイテムのすべてのpublicメソッドは、
225                     JSON-RPCメソッドに公開されます。
226                 </para></listitem>
227                 <listitem><para><code>fault($fault = null, $code = 404, $data =
228                         null)</code>:
229                     <classname>Zend_Json_Server_Error</classname>オブジェクトを生成して返します。
230                 </para></listitem>
231                 <listitem><para><methodname>handle($request = false)</methodname>:
232                     JSON-RPCリクエストを処理します;
233                     任意で、利用するための<classname>Zend_Json_Server_Request</classname>オブジェクトを渡します。
234                     (デフォルトで1つ生成されます)
235                 </para></listitem>
236                 <listitem><para><methodname>getFunctions()</methodname>:
237                     付属のメソッド全ての一覧を返します。
238                 </para></listitem>
239                 <listitem><para><code>setRequest(Zend_Json_Server_Request
240                         $request)</code>:
241                     サーバーのために使用するためのリクエストオブジェクトを指定します。
242                 </para></listitem>
243                 <listitem><para><methodname>getRequest()</methodname>:
244                     サーバーで使われるリクエストオブジェクトを取得します。
245                 </para></listitem>
246                 <listitem><para><code>setResponse(Zend_Json_Server_Response
247                         $response)</code>:
248                     サーバーのために使用するためのレスポンスオブジェクトを設定します。
249                 </para></listitem>
250                 <listitem><para><methodname>getResponse()</methodname>: 
251                     サーバーで使われるレスポンスオブジェクトを取得します。
252                 </para></listitem>
253                 <listitem><para><methodname>setAutoEmitResponse($flag)</methodname>:
254                     サーバーがレスポンスとすべてのヘッダを自動的に送り出さなければならないかどうか示します;
255                     デフォルトで、これは <constant>TRUE</constant> です。
256                 </para></listitem>
257                 <listitem><para><methodname>autoEmitResponse()</methodname>:
258                     レスポンスの自動送出が使用可能かどうか決定します。
259                 </para></listitem>
260                 <listitem><para><methodname>getServiceMap()</methodname>:
261                     <classname>Zend_Json_Server_Smd</classname>オブジェクトの形で
262                     サービス・マップ記述を取得します
263                 </para></listitem>
264             </itemizedlist>
265         </sect3>
267         <sect3 id="zend.json.server.details.zendjsonserverrequest">
268             <title>Zend_Json_Server_Request</title>
270             <para>
271                 JSON-RPCのリクエスト環境は、
272                 <classname>Zend_Json_Server_Request</classname>オブジェクトにカプセル化されます。
273                 このオブジェクトによって、リクエストIDやパラメータ、JSON-RPC仕様のバージョンを含む
274                 JSON-RPCリクエストの必要な部分を設定できます。
275                 それには<acronym>JSON</acronym>または一組のオプションによってそれ自体をロードする能力があって、
276                 それ自体を<methodname>toJson()</methodname>メソッドにより<acronym>JSON</acronym>として翻訳できます。
277             </para>
279             <para>
280                 リクエスト・オブジェクトでは、以下のメソッドを利用できます:
281             </para>
283             <itemizedlist>
284                 <listitem><para><methodname>setOptions(array $options)</methodname>:
285                     オブジェクトの設定を指定します。
286                     <varname>$options</varname>は、どの 'set' メソッドにもマッチするキーを含むでしょう:
287                     <methodname>setParams()</methodname>、<methodname>setMethod()</methodname>、
288                     <methodname>setId()</methodname>及び<methodname>setVersion()</methodname>
289                 </para></listitem>
290                 <listitem><para><methodname>addParam($value, $key = null)</methodname>:
291                     メソッド呼び出しで使うパラメータを追加します。
292                     パラメータは値そのものか、パラメータ名を任意に含むことができます。
293                 </para></listitem>
294                 <listitem><para><methodname>addParams(array $params)</methodname>:
295                     一度に複数のパラメータを追加します。
296                     <methodname>addParam()</methodname>の代わりになります。
297                 </para></listitem>
298                 <listitem><para><methodname>setParams(array $params)</methodname>:
299                     一度に全てのパラメータを設定します;
300                     既存の全てのパラメータを上書きします。
301                 </para></listitem>
302                 <listitem><para><methodname>getParam($index)</methodname>:
303                     位置または名前でパラメータを返します。
304                 </para></listitem>
305                 <listitem><para><methodname>getParams()</methodname>:
306                     一度に全てのパラメータを返します。
307                 </para></listitem>
308                 <listitem><para><methodname>setMethod($name)</methodname>:
309                     呼び出すメソッドを設定します。
310                 </para></listitem>
311                 <listitem><para><methodname>getMethod()</methodname>:
312                     呼び出されるメソッドを取得します。
313                 </para></listitem>
314                 <listitem><para><methodname>isMethodError()</methodname>:
315                     リクエストが異常で、エラーに終わるかどうか決定します。
316                 </para></listitem>
317                 <listitem><para><methodname>setId($name)</methodname>:
318                     リクエスト識別子(クライアントでレスポンスにリクエストにマッチすることに使われる)をセットします。
319                 </para></listitem>
320                 <listitem><para><methodname>getId()</methodname>:
321                     リクエストの識別子を取得します。
322                 </para></listitem>
323                 <listitem><para><methodname>setVersion($version)</methodname>:
324                     リクエストが適合するJSON-RPC仕様バージョンを設定します。
325                     おそらく '1.0' かまたは '2.0' のどちらかです。
326                 </para></listitem>
327                 <listitem><para><methodname>getVersion()</methodname>:
328                     リクエストで使われるJSON-RPC仕様バージョンを取得します。
329                 </para></listitem>
330                 <listitem><para><methodname>loadJson($json)</methodname>:
331                     <acronym>JSON</acronym>文字列からリクエストオブジェクトを読み込みます。
332                 </para></listitem>
333                 <listitem><para><methodname>toJson()</methodname>:
334                     リクエストを<acronym>JSON</acronym>ストリングに翻訳します。
335                 </para></listitem>
336             </itemizedlist>
338             <para>
339                 <acronym>HTTP</acronym>に特有のバージョンは、
340                 <classname>Zend_Json_Server_Request_Http</classname>を通して利用できます。
341                 このクラスは<code>php://input</code>を通じてリクエストを取得し、
342                 <methodname>getRawJson()</methodname>メソッドを通じて生の<acronym>JSON</acronym>へのアクセスを可能にします。
343             </para>
344         </sect3>
346         <sect3 id="zend.json.server.details.zendjsonserverresponse">
347             <title>Zend_Json_Server_Response</title>
349             <para>
350                 JSON-RPCレスポンス・ペイロードは、
351                 <classname>Zend_Json_Server_Response</classname>オブジェクトにカプセル化されます。
352                 このオブジェクトにより、
353                 リクエストの戻り値、レスポンスがエラーかどうか、
354                 リクエスト識別子、レスポンスが従うJSON-RPC仕様バージョン、
355                 そして任意にサービス・マップをセットできます。
356             </para>
358             <para>
359                 レスポンス・オブジェクトでは、以下のメソッドを利用できます:
360             </para>
362             <itemizedlist>
363                 <listitem><para><methodname>setResult($value)</methodname>:
364                     レスポンス結果を設定します。
365                 </para></listitem>
366                 <listitem><para><methodname>getResult()</methodname>:
367                     レスポンス結果を取得します。
368                 </para></listitem>
369                 <listitem><para><code>setError(Zend_Json_Server_Error
370                     $error)</code>:
371                     エラーオブジェクトを設定します。
372                     設定すると、<acronym>JSON</acronym>にシリアライズ化するとき、これがレスポンスとして使われます。
373                 </para></listitem>
374                 <listitem><para><methodname>getError()</methodname>:
375                     もしあれば、エラーオブジェクトを取得します。
376                 </para></listitem>
377                 <listitem><para><methodname>isError()</methodname>:
378                     レスポンスがエラー・レスポンスであるかどうか。
379                 </para></listitem>
380                 <listitem><para><methodname>setId($name)</methodname>:
381                     リクエスト識別子
382                     (クライアントはオリジナルのリクエストでレスポンスにマッチするかもしれません)
383                     を設定します。
384                 </para></listitem>
385                 <listitem><para><methodname>getId()</methodname>:
386                     リクエスト識別子を取得します。
387                 </para></listitem>
388                 <listitem><para><methodname>setVersion($version)</methodname>:
389                     レスポンスが適合するJSON-RPCバージョンを設定します。
390                 </para></listitem>
391                 <listitem><para><methodname>getVersion()</methodname>:
392                     レスポンスが適合するJSON-RPCバージョンを取得します。
393                 </para></listitem>
394                 <listitem><para><methodname>toJson()</methodname>:
395                     レスポンスがエラー・レスポンスで、エラー・オブジェクトをシリアライズ化するならば、
396                     <acronym>JSON</acronym>に対するレスポンスをシリアライズ化します。
397                 </para></listitem>
398                 <listitem><para><methodname>setServiceMap($serviceMap)</methodname>:
399                     サービス・マップ・オブジェクトをレスポンスに設定します。
400                 </para></listitem>
401                 <listitem><para><methodname>getServiceMap()</methodname>:
402                     もしあれば、サービス・マップ・オブジェクトを取得します。
403                 </para></listitem>
404             </itemizedlist>
406             <para>
407                 <acronym>HTTP</acronym>に依存したバージョンは、
408                 <classname>Zend_Json_Server_Response_Http</classname>を通じて利用できます。
409                 このクラスは<acronym>JSON</acronym>としてレスポンスをシリアライズ化するだけでなく、
410                 適切な<acronym>HTTP</acronym>ヘッダを送ります。
411             </para>
412         </sect3>
414         <sect3 id="zend.json.server.details.zendjsonservererror">
415             <title>Zend_Json_Server_Error</title>
417             <para>
418                 JSON-RPCには、エラー状況を報告するために、特別なフォーマットがあります。
419                 エラーはすべて、最小限、エラー・メッセージとエラーコードを用意する必要があります;
420                 任意に、追加のデータ(例えばbacktrace)を用意できます。
421             </para>
423             <para>
424                 エラーコードは、
425                 <ulink url="http://xmlrpc-epi.sourceforge.net/specs/rfc.fault_codes.php">
426                 XML-RPC EPIプロジェクト</ulink>によって推奨されるコードに由来します。
427                 <classname>Zend_Json_Server</classname>は、エラー状態に基づくコードを適切に割り当てます。
428                 アプリケーション例外のためには、コード '-32000' が使われます。
429             </para>
431             <para>
432                 <classname>Zend_Json_Server_Error</classname>
433                 は以下のメソッドを公開します:
434             </para>
436             <itemizedlist>
437                 <listitem><para><methodname>setCode($code)</methodname>:
438                     エラーコードを設定します;
439                     認められたXML-RPCエラーコード範囲にそのコードがないならば、
440                     -32000が割り当てられます。
441                 </para></listitem>
442                 <listitem><para><methodname>getCode()</methodname>:
443                     現行のエラーコードを取得します。
444                 </para></listitem>
445                 <listitem><para><methodname>setMessage($message)</methodname>:
446                     エラーメッセージを設定します。
447                 </para></listitem>
448                 <listitem><para><methodname>getMessage()</methodname>:
449                     現行のエラーメッセージを取得します。
450                 </para></listitem>
451                 <listitem><para><methodname>setData($data)</methodname>:
452                     backtraceのような、
453                     エラーを制限する補助データをさらにセットします。
454                 </para></listitem>
455                 <listitem><para><methodname>getData()</methodname>:
456                     現行のエラー補助データをいずれも取得します。
457                 </para></listitem>
458                 <listitem><para><methodname>toArray()</methodname>:
459                     エラーを配列にキャストします。
460                     配列は 'code'や'message'及び'data'キーを含むでしょう。
461                 </para></listitem>
462                 <listitem><para><methodname>toJson()</methodname>:
463                     エラーをJSON-RPCエラー表現にキャストします。
464                 </para></listitem>
465             </itemizedlist>
466         </sect3>
468         <sect3 id="zend.json.server.details.zendjsonserversmd">
469             <title>Zend_Json_Server_Smd</title>
471             <para>
472                 SMDは、サービス・マッピング記述、
473                 特定のウェブ・サービスとクライアントが相互作用できる方法を定義する<acronym>JSON</acronym>スキーマ、を表します。
474                 この文書の時点では、
475                 <ulink url="http://groups.google.com/group/json-schema/web/service-mapping-description-proposal">
476                 仕様</ulink>は正式にまだ批准されませんでした、
477                 しかし、それは他のJSON-RPC利用者のクライアントだけでなく、
478                 Dojoツールキットの範囲内ですでに使用中です。
479             </para>
481             <para>
482                 最も基本的には、サービス・マッピング記述は、トランスポート(POST、GET、<acronym>TCP</acronym>/IP、その他)
483                 リクエスト・エンベロープ・タイプ(通常、サーバーのプロトコルに基づきます)、
484                 サービスプロバイダのターゲット<acronym>URL</acronym>、
485                 そして利用できるサービスマップのメソッドを示します。
486                 JSON-RPCの場合、サービス・マップは利用できるメソッドのリストです、
487                 そしてそれは、各々のメソッドの期待される戻り値タイプだけでなく、
488                 利用できるパラメータとタイプを文書化します。
489             </para>
491             <para>
492                 <classname>Zend_Json_Server_Smd</classname>は、
493                 サービス・マップをビルドするオブジェクト指向方法を準備します。
494                 最も基本的には、ミューテータを用いてサービスを記述しているメタデータをそれに渡して、
495                 サービス(メソッドと関数)を指定します。
496             </para>
498             <para>
499                 サービス記述自体は、
500                 一般的に<classname>Zend_Json_Server_Smd_Service</classname>のインスタンスです;
501                 <classname>Zend_Json_Server_Smd</classname>の
502                 いろいろなサービス・ミューテータへの配列としてすべての情報を渡すこともできます、
503                 そして、それはサービス・オブジェクトのインスタンスを生成します。
504                 サービス・オブジェクトは、サービス名(一般的に関数またはメソッド名)、
505                 パラメータ(名前、型と位置)や戻り値の型のような情報を含みます。
506                 めったに使われない機能ですが、
507                 各々のサービスはそれ自身のターゲットとエンベロープを任意に持つことができます。
508             </para>
510             <para>
511                 付属のクラスと関数のreflectionを用いて、
512                 <classname>Zend_Json_Server</classname>は舞台裏ですべてを実際に行ないます;
513                 クラスと関数自身への参照で提供することができないカスタム機能を準備する必要がある場合だけ、
514                 あなた自身のサービス・マップを生成しなければなりません。
515             </para>
517             <para>
518                 <classname>Zend_Json_Server_Smd</classname>での利用可能なメソッドを含みます:
519             </para>
521             <itemizedlist>
522                 <listitem><para><methodname>setOptions(array $options)</methodname>:
523                     オプション配列からSMDオブジェクトをセットアップします。
524                     ミューテーターのすべてを、キーとして使うことができます。
525                     (メソッドは 'set' で始まります)
526                 </para></listitem>
527                 <listitem><para><methodname>setTransport($transport)</methodname>:
528                     サービスにアクセスするために使われるトランスポートを設定します;
529                     現行では POST だけがサポートされます。
530                 </para></listitem>
531                 <listitem><para><methodname>getTransport()</methodname>:
532                     現行のサービストランスポートを取得します。
533                 </para></listitem>
534                 <listitem><para><methodname>setEnvelope($envelopeType)</methodname>:
535                     サービスにアクセスするために使われるであろうリクエスト・エンベロープを設定します。
536                     現行では定数の
537                     <constant>Zend_Json_Server_Smd::ENV_JSONRPC_1</constant>及び
538                     <constant>Zend_Json_Server_Smd::ENV_JSONRPC_2</constant>をサポートします。
539                 </para></listitem>
540                 <listitem><para><methodname>getEnvelope()</methodname>:
541                     現行のリクエスト・エンベロープを取得します。
542                 </para></listitem>
543                 <listitem><para><methodname>setContentType($type)</methodname>:
544                      リクエストが使うであろうコンテンツタイプを設定します。
545                      (デフォルトでは、これは 'application/json' です)
546                 </para></listitem>
547                 <listitem><para><methodname>getContentType()</methodname>:
548                     サービスにリクエストするための、現行のコンテンツタイプを取得します。
549                 </para></listitem>
550                 <listitem><para><methodname>setTarget($target)</methodname>:
551                     サービスのための<acronym>URL</acronym>エンドポイントを設定します。
552                 </para></listitem>
553                 <listitem><para><methodname>getTarget()</methodname>:
554                     サービスのための<acronym>URL</acronym>エンドポイントを取得します。
555                 </para></listitem>
556                 <listitem><para><methodname>setId($id)</methodname>:
557                     一般的に、(ターゲットと同じく)これはサービスの<acronym>URL</acronym>エンドポイントです。
558                 </para></listitem>
559                 <listitem><para><methodname>getId()</methodname>:
560                     サービスIDを取得します。
561                     (一般的に、サービスの<acronym>URL</acronym>エンドポイントです)
562                 </para></listitem>
563                 <listitem><para><methodname>setDescription($description)</methodname>:
564                     サービスの定義を設定します。
565                     (一般的に、サービスの目的を説明する物語の情報です)
566                 </para></listitem>
567                 <listitem><para><methodname>getDescription()</methodname>:
568                     サービスの定義を取得します。
569                 </para></listitem>
570                 <listitem><para><methodname>setDojoCompatible($flag)</methodname>:
571                     SMDがDojoツールキットと互換かどうか示すフラグを設定します。
572                     <constant>TRUE</constant> の場合、生成された<acronym>JSON</acronym> SMDは、
573                     DojoのJSON-RPCクライアントが期待する形式に従ってフォーマットされます。
574                 </para></listitem>
575                 <listitem><para><methodname>isDojoCompatible()</methodname>:
576                     Dojo互換性フラグの値を返します。
577                     (デフォルトでは <constant>FALSE</constant> です)
578                 </para></listitem>
579                 <listitem><para><methodname>addService($service)</methodname>:
580                     マップするサービスを追加します。
581                     <classname>Zend_Json_Server_Smd_Service</classname>のコンストラクタに渡す情報の配列か、
582                     またはそのクラスのインスタンスでしょう。
583                 </para></listitem>
584                 <listitem><para><methodname>addServices(array $services)</methodname>:
585                     一度に複数のサービスを追加します。
586                 </para></listitem>
587                 <listitem><para><methodname>setServices(array $services)</methodname>:
588                     一度に複数のサービスを設定します。
589                     以前に設定されたサービスを全て上書きします。
590                 </para></listitem>
591                 <listitem><para><methodname>getService($name)</methodname>:
592                     名前でサービスを取得します。
593                 </para></listitem>
594                 <listitem><para><methodname>getServices()</methodname>:
595                     付属のサービスを全て取得します。
596                 </para></listitem>
597                 <listitem><para><methodname>removeService($name)</methodname>:
598                     マップからサービスを除去します。
599                 </para></listitem>
600                 <listitem><para><methodname>toArray()</methodname>:
601                     サービスマップを配列にキャストします。
602                 </para></listitem>
603                 <listitem><para><methodname>toDojoArray()</methodname>:
604                     サービスマップをDojoツールキット互換の配列にキャストします。
605                 </para></listitem>
606                 <listitem><para><methodname>toJson()</methodname>:
607                     サービスマップを<acronym>JSON</acronym>表現にキャストします。
608                 </para></listitem>
609             </itemizedlist>
611             <para>
612                 <classname>Zend_Json_Server_Smd_Service</classname>には下記のメソッドがあります:
613             </para>
615             <itemizedlist>
616                 <listitem><para><methodname>setOptions(array $options)</methodname>:
617                     配列からオブジェクトの状態を設定します。
618                     どのミューテーター(メソッドは 'set' で始まります)でもキーとして使われ、
619                     このメソッドを通じて設定されるでしょう。
620                 </para></listitem>
621                 <listitem><para><methodname>setName($name)</methodname>:
622                     サービス名を設定します。
623                     (一般的には、関数やメソッドの名前)
624                 </para></listitem>
625                 <listitem><para><methodname>getName()</methodname>:
626                      サービス名を取得します。
627                 </para></listitem>
628                 <listitem><para><methodname>setTransport($transport)</methodname>:
629                     サービスのトランスポートを設定します。
630                     (現行では、<classname>Zend_Json_Server_Smd</classname>によりサポートされる
631                     トランスポートのみ許可されます)
632                 </para></listitem>
633                 <listitem><para><methodname>getTransport()</methodname>: Retrieve the
634                         current transport.</para></listitem>
635                 <listitem><para><methodname>setTarget($target)</methodname>:
636                     サービスの<acronym>URL</acronym>エンドポイントを設定します。
637                     (一般的には、サービスが付与される全体的なSMDとこれは同じです。)
638                 </para></listitem>
639                 <listitem><para><methodname>getTarget()</methodname>:
640                     サービスの<acronym>URL</acronym>エンドポイントを取得します。
641                 </para></listitem>
642                 <listitem><para><methodname>setEnvelope($envelopeType)</methodname>:
643                     サービスのエンベロープタイプを設定します。
644                     (現行では、<classname>Zend_Json_Server_Smd</classname>によりサポートされる
645                     エンベロープのみ許可されます)
646                 </para></listitem>
647                 <listitem><para><methodname>getEnvelope()</methodname>:
648                     サービスのエンベロープタイプを取得します。
649                 </para></listitem>
650                 <listitem><para><code>addParam($type, array $options = array(),
651                             $order = null)</code>:
652                     サービスにパラメータを追加します。
653                     デフォルトで、パラメータ型だけは必要です。
654                     しかしながら、下記のオプションのように、指令を与えたいかもしれません:
655                     </para>
656                     <itemizedlist>
657                         <listitem><para><emphasis>name</emphasis>:
658                             パラメータ名
659                         </para></listitem>
660                         <listitem><para><emphasis>optional</emphasis>:
661                             パラメータが任意か否か
662                         </para></listitem>
663                         <listitem><para><emphasis>default</emphasis>:
664                             パラメータの既定値
665                         </para></listitem>
666                         <listitem><para><emphasis>description</emphasis>:
667                             パラメータを記述するテキスト
668                         </para></listitem>
669                     </itemizedlist>
670                 </listitem>
671                 <listitem><para><methodname>addParams(array $params)</methodname>:
672                     一度にいくつかのパラメータを追加します;
673                     各々のパラメータは、最小限、パラメータ型を記述する '型' 、
674                     さらに任意で '順序' キーを含む連想配列でなければなりません。
675                     その他の全てのキーは<methodname>addOption()</methodname>に
676                     <varname>$options</varname>として渡されます。
677                 </para></listitem>
678                 <listitem><para><methodname>setParams(array $params)</methodname>:
679                     一度に複数のパラメーターを設定します。
680                     既存のパラメータを全て上書きします。
681                 </para></listitem>
682                 <listitem><para><methodname>getParams()</methodname>:
683                     現行で設定されているパラメータを全て取得します。
684                 </para></listitem>
685                 <listitem><para><methodname>setReturn($type)</methodname>:
686                     サービスの返り値の型を設定します。
687                 </para></listitem>
688                 <listitem><para><methodname>getReturn()</methodname>:
689                     サービスの返り値の型を取得します。
690                 </para></listitem>
691                 <listitem><para><methodname>toArray()</methodname>:
692                     サービスを配列にキャストします。
693                 </para></listitem>
694                 <listitem><para><methodname>toJson()</methodname>:
695                     サービスを<acronym>JSON</acronym>表現にキャストします。
696                 </para></listitem>
697             </itemizedlist>
698         </sect3>
699     </sect2>
700 </sect1>
701 <!--
702 vim:se ts=4 sw=4 et: