[GENERIC] Zend_Translate:
[zend.git] / documentation / manual / ja / module_specs / Zend_Soap_Server.xml
blob61979b9e07637df95682a2df0143e297ce62ea75
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- Reviewed: no -->
3 <!-- EN-Revision: 20810 -->
4 <sect1 id="zend.soap.server">
5     <title>Zend_Soap_Server</title>
7     <para>
8         <classname>Zend_Soap_Server</classname>クラスは、
9         ウェブ・サービス部分の開発を<acronym>PHP</acronym>プログラマーにとって簡単にすることを目的としています。
10     </para>
12     <para>
13         それは、ウェブサービス<acronym>API</acronym>を定義するクラスまたは機能を使って、
14         WSDLモードまたは非WSDLモードで使われるかもしれません。
15     </para>
17     <para>
18         <classname>Zend_Soap_Server</classname>コンポーネントがWSDLモードで動くとき、
19         サーバオブジェクトの挙動とトランスポート層オプションを定義する
20         すでに用意されたWSDLドキュメントを使います。
21     </para>
23     <para>
24         WSDLドキュメントは
25         <link linkend="zend.soap.autodiscovery.introduction">Zend_Soap_AutoDiscoveryコンポーネント</link>
26         によって提供される機能によって自動的に生成されるか、
27         または、<link linkend="zend.soap.wsdl"><classname>Zend_Soap_Wsdl</classname>クラス</link>や、
28         その他の<acronym>XML</acronym>生成ツールを使って、
29         手動で構成されます。
30     </para>
32     <para>
33         非WSDLモードが使われるならば、
34         すべてのプロトコル・オプションはオプション・メカニズムを用いて設定されなければなりません。
35     </para>
37     <sect2 id="zend.soap.server.constructor">
38         <title>Zend_Soap_Serverコンストラクタ</title>
39         <para>
40             <classname>Zend_Soap_Server</classname>コンストラクタは、
41             WSDLモードと非WSDLモードとでは少し使い方が違います。
42         </para>
44         <sect3 id="zend.soap.server.constructor.wsdl_mode">
45             <title>WSDLモードのためのZend_Soap_Serverコンストラクタ</title>
46             <para>
47                 WSDLモードで動作する場合、<classname>Zend_Soap_Server</classname>コンストラクタは2つの引数を受け取ります:
48                 <orderedlist>
49                     <listitem>
50                         <para>
51                             <code>$wsdl</code> WSDLファイルの<acronym>URI</acronym>
52                             <footnote>
53                                 <para>
54                                     あとで<methodname>setWsdl($wsdl)</methodname>メソッドを使って
55                                     設定されるかもしれません。
56                                 </para>
57                             </footnote>
58                         </para>
59                     </listitem>
60                     <listitem>
61                         <para>
62                             <code>$options</code> - <acronym>SOAP</acronym>サーバオブジェクトを作成するためのオプション
63                             <footnote>
64                                 <para>
65                                     オプションは後で<methodname>setOptions($options)</methodname>を使って
66                                     設定されるかもしれません。
67                                 </para>
68                             </footnote>
69                         </para>
70                         <para>
71                             WSDLモードでは下記のオプションが許されています:
72                             <itemizedlist>
73                                 <listitem>
74                                     <para>
75                                         'soap_version' ('soapVersion') - 使用する<acronym>SOAP</acronym>バージョン (SOAP_1_1 または SOAP_1_2)
76                                     </para>
77                                 </listitem>
78                                 <listitem>
79                                     <para>
80                                         'actor' - サーバのためのアクター<acronym>URI</acronym>。
81                                     </para>
82                                 </listitem>
83                                 <listitem>
84                                     <para>
85                                         'classmap' ('classMap') -
86                                         一部の WSDL 型を<acronym>PHP</acronym>クラスにマップするために使います。
87                                     </para>
88                                     <para>
89                                         このオプションは、キーとしてWSDL型、値として<acronym>PHP</acronym>クラス名をもつ配列でなければなりません。
90                                     </para>
91                                 </listitem>
92                                 <listitem>
93                                     <para>
94                                         'encoding' - 内部文字エンコーディング。 (対外的なエンコーディングとしてUTF-8が常に使われます)
95                                     </para>
96                                 </listitem>
97                                 <listitem>
98                                     <para>
99                                         'wsdl' <methodname>setWsdl($wsdlValue)</methodname>呼び出しと同じです。
100                                     </para>
101                                 </listitem>
102                             </itemizedlist>
103                         </para>
104                     </listitem>
105                 </orderedlist>
106             </para>
107         </sect3>
109         <sect3 id="zend.soap.server.wsdl_mode">
110             <title>非WSDLモードのためのZend_Soap_Serverコンストラクタ</title>
111             <para>
112                 非WSDLモードで<classname>Zend_Soap_Server</classname>機能を使うつもりなら、
113                 最初のコンストラクタ・パラメータは<constant>NULL</constant>に設定し<emphasis>なければなりません</emphasis>。
114             </para>
115             <para>
116                 この場合、'uri' オプションを設定しなければなりません。(下記参照)
117             </para>
119             <para>
120                 2番目のコンストラクタ・パラメータ (<code>$options</code>) は、
121                 <acronym>SOAP</acronym>サーバオブジェクトを作成するためのオプション配列です
122                 <footnote>
123                     <para>
124                         オプションは後で<methodname>setOptions($options)</methodname>メソッドを使って
125                         設定されるかもしれません。
126                     </para>
127                 </footnote>
128             </para>
129             <para>
130                 非WSDLモードでは下記のオプションが許されています:
131                 <itemizedlist>
132                     <listitem>
133                         <para>
134                             'soap_version' ('soapVersion') - 使用する<acronym>SOAP</acronym>バージョン (SOAP_1_1 または SOAP_1_2)
135                         </para>
136                     </listitem>
137                     <listitem>
138                         <para>
139                             'actor' - サーバのためのアクター<acronym>URI</acronym>。
140                         </para>
141                     </listitem>
142                     <listitem>
143                         <para>
144                             'classmap' ('classMap') -
145                             一部の WSDL 型を<acronym>PHP</acronym>クラスにマップするために使います。
146                         </para>
147                         <para>
148                             このオプションは、キーとしてWSDL型、値として<acronym>PHP</acronym>クラス名をもつ配列でなければなりません。
149                         </para>
150                     </listitem>
151                     <listitem>
152                         <para>
153                             'encoding' - 内部文字エンコーディング。 (対外的なエンコーディングとしてUTF-8が常に使われます)
154                         </para>
155                     </listitem>
156                     <listitem>
157                         <para>
158                             'uri' (必須) - <acronym>SOAP</acronym>サーバのための<acronym>URI</acronym>ネームスペース
159                         </para>
160                     </listitem>
161                 </itemizedlist>
162             </para>
163         </sect3>
164     </sect2>
166     <sect2 id="zend.soap.server.api_define_methods">
167         <title>ウェブ・サービスAPIを定義するメソッド</title>
169         <para>
170             <acronym>SOAP</acronym>を通して<acronym>PHP</acronym>コードにアクセスすることを許可したいときに、
171             ウェブサービス<acronym>API</acronym>を定義する2つの方法があります。
172         </para>
174         <para>
175             最初の一つは、ウェブサービス<acronym>API</acronym>を完全に記述しなければならない<classname>Zend_Soap_Server</classname>オブジェクトに対して、
176             いくつかのクラスを付与することです:
177             <programlisting language="php"><![CDATA[
179 class MyClass {
180     /**
181      * このメソッドは ...
182      *
183      * @param integer $inputParam
184      * @return string
185      */
186     public function method1($inputParam) {
187         ...
188     }
190     /**
191      * このメソッドは ...
192      *
193      * @param integer $inputParam1
194      * @param string  $inputParam2
195      * @return float
196      */
197     public function method2($inputParam1, $inputParam2) {
198         ...
199     }
201     ...
204 $server = new Zend_Soap_Server(null, $options);
205 // クラスをSOAPサーバにバインド
206 $server->setClass('MyClass');
207 // 初期化済みのオブジェクトをSOAPサーバにバインド
208 $server->setObject(new MyClass());
210 $server->handle();
211 ]]></programlisting>
212             <note>
213                 <title>重要</title>
214                 <para>
215                     対応するウェブサービスWSDLを準備するautodiscover機能を使うつもりならば、
216                     メソッドdocblockを使って各々のメソッドを完全に記述しなければなりません。
217                 </para>
218             </note>
219         </para>
221         <para>
222             ウェブサービス<acronym>API</acronym>を定義する2つ目の方法は、
223             関数のセットや<methodname>addFunction()</methodname>または<methodname>loadFunctions()</methodname>メソッドを使うことです:
224             <programlisting language="php"><![CDATA[
227  * この関数は...
229  * @param integer $inputParam
230  * @return string
231  */
232 function function1($inputParam) {
233     ...
237  * この関数は...
239  * @param integer $inputParam1
240  * @param string  $inputParam2
241  * @return float
242  */
243 function function2($inputParam1, $inputParam2) {
244     ...
247 $server = new Zend_Soap_Server(null, $options);
248 $server->addFunction('function1');
249 $server->addFunction('function2');
251 $server->handle();
252 ]]></programlisting>
253         </para>
254     </sect2>
256     <sect2 id="zend.soap.server.request_response">
257         <title>リクエストおよびレスポンスオブジェクトの操作</title>
258         <note>
259             <title>高度な利用</title>
260             <para>
261                 このセクションではリクエスト/レスポンス処理の高度なオプションを説明します。
262                 スキップされるかもしれません。
263             </para>
264         </note>
266         <para>
267             <classname>Zend_Soap_Server</classname>コンポーネントは自動的にリクエスト/レスポンス処理を実行します。
268             しかし、その処理を捕まえて何らかの事前もしくは事後の処理をさせることもできます。
269         </para>
271         <sect3 id="zend.soap.server.request_response.request">
272             <title>リクエスト処理</title>
274             <para>
275                 <methodname>Zend_Soap_Server::handle()</methodname>メソッドは、
276                 標準的な入力ストリーム ('php://input') からリクエストを取得します。
277                 それは、<methodname>handle()</methodname>メソッドにオプションのパラメータを供給することによって、
278                 または、<methodname>setRequest()</methodname>メソッドを用いてリクエストを設定することによって
279                 上書きされるかもしれません:
280                 <programlisting language="php"><![CDATA[
282 $server = new Zend_Soap_Server(...);
284 // オプションの $request パラメータを使ってリクエストを設定
285 $server->handle($request);
287 // setRequest() メソッドを使ってリクエストを設定
288 $server->setRequest();
289 $server->handle();
290 ]]></programlisting>
291             </para>
293             <para>
294                 リクエストオブジェクトは以下のどれかを用いて表されるかもしれません:
295                 <itemizedlist>
296                     <listitem>
297                         <para>
298                             DOMDocument (<acronym>XML</acronym>にキャストされます)
299                         </para>
300                     </listitem>
301                     <listitem>
302                         <para>
303                             DOMNode (
304                             所有者のドキュメントは横取りされて<acronym>XML</acronym>にキャストされます)
305                         </para>
306                     </listitem>
307                     <listitem>
308                         <para>
309                             SimpleXMLElement (<acronym>XML</acronym>にキャストされます)
310                         </para>
311                     </listitem>
312                     <listitem>
313                         <para>
314                             stdClass (__toString() が呼び出されて、有効な<acronym>XML</acronym>であることが確かめられます)
315                         </para>
316                     </listitem>
317                     <listitem>
318                         <para>
319                             string (有効な<acronym>XML</acronym>であることが確かめられます)
320                         </para>
321                     </listitem>
322                 </itemizedlist>
323             </para>
325             <para>
326                 最後に処理されたリクエストは<methodname>getLastRequest()</methodname>メソッドを使って<acronym>XML</acronym>文字列として取得されます:
327                 <programlisting language="php"><![CDATA[
329 $server = new Zend_Soap_Server(...);
331 $server->handle();
332 $request = $server->getLastRequest();
333 ]]></programlisting>
335             </para>
336         </sect3>
338         <sect3 id="zend.soap.server.request_response.response">
339             <title>レスポンスの事前処理</title>
341             <para>
342                 <methodname>Zend_Soap_Server::handle()</methodname>メソッドは、出力ストリームに生成されたレスポンスを自動的に送ります。
343                 それは<methodname>setReturnResponse()</methodname>にパラメータとして
344                 <constant>TRUE</constant>または<constant>FALSE</constant>を与えてブロックできます。
345                 <footnote>
346                     <para>
347                         戻るレスポンスフラグの現在の状態は
348                         <methodname>setReturnResponse()</methodname> メソッドによりリクエストされます。
349                     </para>
350                 </footnote>
351                 生成されたレスポンスはこの場合、<methodname>handle()</methodname>メソッドにより戻されます。
352                 <programlisting language="php"><![CDATA[
354 $server = new Zend_Soap_Server(...);
356 // 標準出力に送る代わりに、
357 //handle() メソッドの返り値としてレスポンスを取得
358 $server->setReturnResponse(true);
360 $response = $server->handle();
362 ]]></programlisting>
363             </para>
365             <para>
366                 ある処理のために、最後のレスポンスを<methodname>getLastResponse()</methodname>メソッドで取得することもできます:
367                 <programlisting language="php"><![CDATA[
369 $server = new Zend_Soap_Server(...);
371 $server->handle();
372 $response = $server->getLastResponse();
374 ]]></programlisting>
375             </para>
376         </sect3>
377     </sect2>
378 </sect1>