cvs: peardoc /ja/package/webservices/xml-rpc api.xml examples.xml intro.xml support.xml

From: Date: Sat, 10 Sep 2005 09:44:04 +0000
Subject: cvs: peardoc /ja/package/webservices/xml-rpc api.xml examples.xml intro.xml support.xml
Groups: php.pear.doc 
Request: Send a blank email to pear-doc+get-6795@lists.php.net to get a copy of this message
haruki Sat Sep 10 05:44:04 2005 EDT Added files: /peardoc/ja/package/webservices/xml-rpc api.xml examples.xml intro.xml support.xml Log: new translations

http://cvs.php.net/co.php/peardoc/ja/package/webservices/xml-rpc/api.xml?r=1.1&p=1 Index: peardoc/ja/package/webservices/xml-rpc/api.xml +++ peardoc/ja/package/webservices/xml-rpc/api.xml <?xml version="1.0" encoding="utf-8"?> <!-- $Revision: 1.1 $ --> <!-- EN-Revision: 1.3 Maintainer: takagi Status: ready --> <refentry id="package.webservices.xml-rpc.api"> <refnamediv> <refname>API</refname> <refpurpose>パッケージ内のクラスのドキュメント</refpurpose> </refnamediv> <refsect1 id="package.webservices.xml-rpc.api.client"> <title>XML_RPC_Client</title> <para> これは、XML-RPC サーバのクライアントを表現するために使用されます。 </para> <refsect2> <title>生成</title> <para> コンストラクタは以下のような構文です。 </para> <funcsynopsis> <funcprototype> <funcdef>$client = new XML_RPC_Client</funcdef> <paramdef> string <parameter>$path</parameter> </paramdef> <paramdef> string <parameter>$server</parameter> </paramdef> <paramdef> integer <parameter><optional>$port</optional></parameter> </paramdef> <paramdef> string <parameter><optional>$proxy</optional></parameter> </paramdef> <paramdef> integer <parameter><optional>$proxy_port</optional></parameter> </paramdef> <paramdef> string <parameter><optional>$proxy_user</optional></parameter> </paramdef> <paramdef> string <parameter><optional>$proxy_pass</optional></parameter> </paramdef> </funcprototype> </funcsynopsis> <para> <variablelist> <varlistentry> <term> &type.string; <parameter>$path</parameter> </term> <listitem> <para> リクエストを送信したい RPC サーバスクリプトのパスと名前。 </para> </listitem> </varlistentry> <varlistentry> <term> &type.string; <parameter>$server</parameter> </term> <listitem> <para> 接続先リモートサーバの URL 。プロトコルが指定されておらず、 かつ $port が 443 であった場合は ssl:// が使用されます。 </para> </listitem> </varlistentry> <varlistentry> <term> &type.int; <parameter>$port</parameter> </term> <listitem> <para> リモートサーバに接続する際のポート。デフォルトは 80 で、 http:// 接続を表します。443 を指定すると https:// および ssl:// 接続となります。 </para> </listitem> </varlistentry> <varlistentry> <term> &type.string; <parameter>$proxy</parameter> </term> <listitem> <para> もし使用するなら、プロキシサーバの URL 。 プロトコルが指定されておらず、 かつ $port が 443 であった場合は ssl:// が使用されます。 </para> </listitem> </varlistentry> <varlistentry> <term> &type.int; <parameter>$proxy_port</parameter> </term> <listitem> <para> リモートサーバに接続する際のポート。デフォルトは 8080 で、 http:// 接続を表します。443 を指定すると https:// および ssl:// 接続となります。 </para> </listitem> </varlistentry> <varlistentry> <term> &type.string; <parameter>$proxy_user</parameter> </term> <listitem> <para> プロキシサーバにアクセスするためのユーザ名。 </para> </listitem> </varlistentry> <varlistentry> <term> &type.string; <parameter>$proxy_pass</parameter> </term> <listitem> <para> プロキシサーバにアクセスするためのパスワード。 </para> </listitem> </varlistentry> </variablelist> </para> <para> <note> <para> SSL 接続を使用するには、 <ulink url="http://php.net/openssl"> <literal>openssl</literal></ulink> 拡張モジュールを有効にして PHP がインストールされている必要があります。 </para> </note> </para> <para> <emphasis>betty.userland.com</emphasis> にある Userland の XML-RPC サーバに問い合わせるためのクライアント設定の例は このようになります。 </para> <programlisting role="php"> <![CDATA[ $client = new XML_RPC_Client('/RPC2', 'betty.userland.com'); ]]> </programlisting> </refsect2> <refsect2> <title>メソッド</title> <para> このクラスは以下のメソッドをサポートしています。 </para> <refsect3> <title><function>send</function></title> <para> このメソッドは以下のような書式です。 </para> <funcsynopsis> <funcprototype> <funcdef>$response = $client->send</funcdef> <paramdef><parameter>$xmlrpc_message</parameter></paramdef> <paramdef><parameter><optional>$timeout</optional></parameter></paramdef> </funcprototype> </funcsynopsis> <para> <parameter>$xmlrpc_message</parameter> は <classname>XML_RPC_Message</classname> のインスタンスで、 <parameter>$response</parameter> は <classname>XML_RPC_Response</classname> のインスタンスです(<xref linkend="package.webservices.xml-rpc.api.response" /> を参照ください)。 </para> <para> <parameter>$timeout</parameter> はオプションで、指定しなかった場合は <literal>0</literal>(永遠に待ち続ける)となります。この値は <function>fsockopen</function> に渡されます。 </para> <para> もし <parameter>$response</parameter> の内容が <classname>XML_RPC_Response</classname> ではなく <literal>0</literal> であった場合、それは I/O エラーが発生したことを 表します。発生した I/O エラーの内容については、 <varname>$client->errno</varname> および <varname>$client->errstring</varname> の値から知ることができます。 </para> <para> 低レベルのエラーに加え、問い合わせ先の XML-RPC サーバが <classname>XML_RPC_Response</classname> オブジェクトの中でエラーを 返すこともあります。これらのエラーを処理する方法については <xref linkend="package.webservices.xml-rpc.api.response" /> を参照ください。 </para> </refsect3> <refsect3> <title><function>setCredentials</function></title> <funcsynopsis> <funcprototype> <funcdef>$client->setCredentials</funcdef> <paramdef><parameter>$username</parameter></paramdef> <paramdef><parameter>$password</parameter></paramdef> </funcprototype> </funcsynopsis> <para> このメソッドは、クライアントがサーバに対する認証処理を行う際の ユーザ名とパスワードを指定します。デフォルトの通信(HTTP)では、 これらの情報が HTTP ベーシック認証に使用されます。 </para> </refsect3> <refsect3> <title><function>setCertificate</function></title> <funcsynopsis> <funcprototype> <funcdef>$client->setCertificate</funcdef> <paramdef><parameter>$certificate</parameter></paramdef> <paramdef><parameter>$passphrase</parameter></paramdef> </funcprototype> </funcsynopsis> <para> このメソッドは、リモートサーバとの SSL 通信を行う際に使用される オプションの証明書とパスフレーズを設定します。 </para> <para> <parameter>certificate</parameter> パラメータは、PEM フォーマットの 証明書ファイル名である必要があります。 <parameter>passphrase</parameter> パラメータは、その証明書を使用するために 必要なパスワードを含んでいる必要があります。 </para> <para> これを使用するには、PHP のコンパイル時に <literal>openssl</literal> 拡張モジュールを組み込んでおく必要があります。 </para> </refsect3> <!-- methods don't exist (yet) <refsect3> <title><function>setSSLVerifyPeer</function></title> <funcsynopsis> <funcprototype> <funcdef>$client->setSSLVerifyPeer</funcdef> <paramdef><parameter>$i</parameter></paramdef> </funcprototype> </funcsynopsis> <para> This method defines whether connections made to XML-RPC backends via HTTPS should verify the remote host's SSL certificate, and cause the connection to fail if the cert verification fails. $i should be a boolean value. </para> </refsect3> <refsect3> <title><function>setSSLVerifyHost</function></title> <funcsynopsis> <funcprototype> <funcdef>$client->setSSLVerifyHost</funcdef> <paramdef><parameter>$i</parameter></paramdef> </funcprototype> </funcsynopsis> <para> This method defines whether connections made to XML-RPC backends via HTTPS should verify the remote host's SSL certificate's common name (CN). By default, only the existence of a CN is checked. $i should be an integer value; 0 to not check the CN at all, 1 to merely check for its existence, and 2 to check that the CN on the certificate matches the hostname that is being connected to. </para> </refsect3> --> <refsect3> <title><function>setDebug</function></title> <funcsynopsis> <funcprototype> <funcdef>$client->setDebug</funcdef> <paramdef><parameter>$debugOn</parameter></paramdef> </funcprototype> </funcsynopsis> <para> <parameter>$debugOn</parameter> は <literal>0</literal> あるいは <literal>1</literal> のどちらかで、クライアントのブラウザにデバッグ情報を 表示するか否かを指定します。デフォルトではこの情報を表示しません。 </para> <para> デバッグ情報の中には XML-RPC サーバが返す問い合わせ結果の生データが含まれ、 またサーバから返された値を表すためにクライアントが作成しようとした PHP の値も含まれます。サーバが返す内容を正確に確認することができるので、 このオプションはサーバのデバッグ時に有用です。 </para> </refsect3> </refsect2> </refsect1> <refsect1 id="package.webservices.xml-rpc.api.message" xreflabel="XML_RPC_Message"> <title>XML_RPC_Message</title> <para> このクラスは XML-RPC サーバへのリクエストを表します。クライアントは <classname>XML_RPC_Message</classname> をサーバに送信し、 <classname>XML_RPC_Response</classname> を受け取ります。 </para> <refsect2> <title>生成</title> <para> コンストラクタは以下のような構文です。 </para> <funcsynopsis> <funcprototype> <funcdef>$msg = new XML_RPC_Message</funcdef> <paramdef><parameter>$methodName</parameter></paramdef> <paramdef><parameter>$parameterArray</parameter></paramdef> </funcprototype> </funcsynopsis> <para> <parameter>$methodName</parameter> は起動したいメソッドの名前で、 <parameter>$parameterArray</parameter> は <classname>XML_RPC_Value</classname> オブジェクトの配列です。 <emphasis>US state name</emphasis> サーバにメッセージを送信する例です。 </para> <programlisting role="php"> <![CDATA[ require_once "XML/RPC.php"; $msg = new XML_RPC_Message("examples.getStateName", array(new XML_RPC_Value(23, "int"))); ]]> </programlisting> <para> この例では州番号 23 の州の名前を問い合わせています。 <classname>XML_RPC_Value</classname> オブジェクトについての 詳細な情報は <xref linkend="package.webservices.xml-rpc.api.value" /> を参照ください。 </para> </refsect2> <refsect2> <title>メソッド</title> <refsect3> <title><function>serialize</function></title> <funcsynopsis> <funcprototype> <funcdef>$outString = $msg->serialize</funcdef> <paramdef></paramdef> </funcprototype> </funcsynopsis> <para> XML-RPC メッセージを表す XML 文字列を返します。 </para> </refsect3> <refsect3> <title><function>addParam</function></title> <funcsynopsis> <funcprototype> <funcdef>$msg->addParam</funcdef> <paramdef><parameter>$xmlrpcVal</parameter></paramdef> </funcprototype> </funcsynopsis> <para> このメソッドのコールにより、パラメータリストに <classname>XML_RPC_Value</classname> オブジェクト <parameter>$xmlrpcVal</parameter> を追加します。 </para> </refsect3> <refsect3> <title><function>getParam</function></title> <funcsynopsis> <funcprototype> <funcdef>$xmlrpcVal = $msg->getParam</funcdef> <paramdef><parameter>$n</parameter></paramdef> </funcprototype> </funcsynopsis> <para> メッセージ中の <parameter>$n</parameter> 番目のパラメータを取得します。 このメソッドが使用できるかどうかはサーバの実装に依存します。 もしパラメータが存在しない場合は <literal>undef</literal> を返します。 </para> </refsect3> <refsect3> <title><function>getNumParams</function></title> <funcsynopsis> <funcprototype> <funcdef>$n = $msg->getNumParams</funcdef> <paramdef></paramdef> </funcprototype> </funcsynopsis> <para> メッセージに付属するパラメータの数を返します。 </para> </refsect3> <refsect3> <title><function>method</function></title> <funcsynopsis> <funcprototype> <funcdef>$methName=$msg->method</funcdef> <paramdef></paramdef> </funcprototype> <funcprototype> <funcdef>$msg->method</funcdef> <paramdef><parameter>$methName</parameter></paramdef> </funcprototype> </funcsynopsis> <para> XML-RPC メッセージ中に含まれるメソッドを取得あるいは設定します。 </para> </refsect3> <refsect3> <title><function>parseResponse</function></title> <funcsynopsis> <funcprototype> <funcdef>$response = $msg->parseResponse</funcdef> <paramdef><parameter>$xmlString</parameter></paramdef> </funcprototype> </funcsynopsis> <para> 文字列 <parameter>$xmlString</parameter> に含まれる XML-RPC サーバからの 応答を受け取り、<classname>XML_RPC_Response</classname> オブジェクトを 構築してそれを返します。また適切なエラーコードを設定します。 </para> <para> このメソッドは、見つかった HTTP/MIME ヘッダをすべて処理します。 </para> </refsect3> <refsect3> <title><function>parseResponseFile</function></title> <funcsynopsis> <funcprototype> <funcdef>$response = $msg->parseResponseFile</funcdef> <paramdef><parameter>$fileHandle</parameter></paramdef> </funcprototype> </funcsynopsis> <para> ファイルハンドル <parameter>$fileHandle</parameter> から XML-RPC サーバの応答を読み込み、それを <function>parseResponse</function> に渡します。 </para> <para> このメソッドは、事前に用意されたファイルから応答を生成する際に有用です。 また、見つかった HTTP ヘッダをすべて処理します。 </para> </refsect3> </refsect2> </refsect1> <refsect1 id="package.webservices.xml-rpc.api.response" xreflabel="XML_RPC_Response"> <title>XML_RPC_Response</title> <para> このクラスは、XML-RPC リクエストに対する応答を格納するために使用されます。 サーバのメソッドハンドラは <classname>XML_RPC_Response</classname> を 作成し、返り値としてそれを渡します。 <classname>XML_RPC_Client</classname> クラスの <function>send</function> メソッドを実行した際に、これと同じ値が返されます。 </para> <refsect2> <title>生成</title> <funcsynopsis> <funcprototype> <funcdef>$resp = new XML_RPC_Response</funcdef> <paramdef><parameter>$xmlrpcval</parameter></paramdef> </funcprototype> <funcprototype> <funcdef>$resp = new XML_RPC_Response</funcdef> <paramdef><parameter>0</parameter></paramdef> <paramdef><parameter>$errcode</parameter></paramdef> <paramdef><parameter>$errstring</parameter></paramdef> </funcprototype> </funcsynopsis> <para> ひとつめのインスタンスは、何の問題もなく処理が実行された際に使用されます。 <parameter>$xmlrpcval</parameter> は <classname>XML_RPC_Value</classname> の値で、メソッドの実行結果が 格納されています。 </para> <para> 2 番目の形式のコンストラクタは、失敗時に使用されます。どこに問題が あったのかを示すために、<parameter>$errcode</parameter> および <parameter>$errstring</parameter> が使用されます。渡されるエラーコードの 詳細については <xref linkend="package.webservices.xml-rpc.api.server" /> を参照ください。 </para> </refsect2> <refsect2> <title>メソッド</title> <refsect3> <title><function>faultCode</function></title> <funcsynopsis> <funcprototype> <funcdef>$fn = $resp->faultCode</funcdef> <paramdef></paramdef> </funcprototype> </funcsynopsis> <para> XML-RPC レスポンス <parameter>$resp</parameter> から、失敗のコードを 整数値で返します。ゼロは成功を、それ以外の値は失敗を意味します。 </para> </refsect3> <refsect3> <title><function>faultString</function></title> <funcsynopsis> <funcprototype> <funcdef>$fs = $resp->faultString</funcdef> <paramdef></paramdef> </funcprototype> </funcsynopsis> <para> <varname>$resp->faultCode</varname> が示す失敗の内容を、 人間が読める形式で返します。 </para> </refsect3> <refsect3> <title><function>value</function></title> <funcsynopsis> <funcprototype> <funcdef>$xmlrpcVal = $resp->value</funcdef> <paramdef></paramdef> </funcprototype> </funcsynopsis> <para> サーバから送信された返り値が含まれる <classname>XML_RPC_Value</classname> オブジェクトを返します。応答の <varname>faultCode</varname> がゼロ以外の 場合、このメソッドが返す値を使用するべきではありません(返り値は オブジェクトですらないかもしれません)。 </para> </refsect3> <refsect3> <title><function>serialize</function></title> <funcsynopsis> <funcprototype> <funcdef>$outString = $resp->serialize</funcdef> <paramdef></paramdef> </funcprototype> </funcsynopsis> <para> 応答を、XML 文字列形式で返します。 </para> </refsect3> </refsect2> </refsect1> <refsect1 id="package.webservices.xml-rpc.api.value" xreflabel="XML_RPC_Value"> <title>XML_RPC_Value</title> <para> これは、多くの大変な仕事を担当するものです。このクラスは、XML-RPC で使用する値の作成とカプセル化を可能にします。 </para> <para> 事前に <ulink url="&url.xmlrpc.spec;">&url.xmlrpc.spec;</ulink> で XML-RPC の仕様を読んでおくと、これ以降の内容を理解しやすくなるでしょう。 </para> <para> <classname>XML_RPC_Value</classname> クラスは、以下の型を利用して 任意の複雑な値を格納することが可能です。 <literal>i4</literal>、 <literal>int</literal>、 <literal>boolean</literal>、 <literal>string</literal>、 <literal>double</literal>、 <literal>dateTime.iso8601</literal>、 <literal>base64</literal>、 <literal>array</literal> あるいは <literal>struct</literal>。 これらの型についての詳細な情報は <ulink url="&url.xmlrpc.spec;">仕様</ulink> を参照ください。 </para> <refsect2> <title>型についての注意</title> <refsect3> <title>int</title> <para> <classname>i4</classname> 型は <classname>int</classname> の別名です。コード中で値を解析する際には 自動的に <classname>i4</classname> が <classname>int</classname> に変換されます。この実装では、<classname>int</classname> のほうを 正式名とみなしています。 </para> </refsect3> <refsect3> <title>base64</title> <para> この型を使用すると、Base64 エンコーディングが透過的に行われます。 そのため、これはバイナリデータ型として扱うべきで、7 ビットクリーン ではないデータを渡したい場合に使用します。デコード処理もまた 透過的に行われます。 </para> </refsect3> <refsect3> <title>boolean</title> <para> <literal>true</literal> および <literal>1</literal> は <literal>true</literal> にマップされます。それ以外のすべての値 (空文字列を含む)は <literal>false</literal> に変換されます。 </para> </refsect3> <refsect3> <title>string</title> <para> <literal>&lt;</literal>、 <literal>&gt;</literal>、 <literal>&quot;</literal> および <literal>&amp;</literal> の各文字は、 XML-RPC での通信の際に各々と等価なエンティティ <literal>&amp;lt;</literal>、 <literal>&amp;gt;</literal>、 <literal>&amp;quot;</literal> および <literal>&amp;amp;</literal> に変換されます。現在の XML-RPC の仕様では エンコードするよう推奨されているのは <literal>&lt;</literal> および <literal>&amp;</literal> だけですが、この実装ではさらに一歩先を行っています。 その理由は <ulink url="&url.w3.xml.rec;">XML 1.0 勧告</ulink> で説明されています。 </para> <para> TODO: <literal>&amp;apos;</literal> エンティティは現在サポートされていません。 </para> </refsect3> </refsect2> <refsect2 id="package.webservices.xml-rpc.api.value.creation" xreflabel="XML_RPC_Value constructors"> <title>生成</title> <para> コンストラクタは、<classname>XML_RPC_Value</classname> を生成するための一般的な方法です。コンストラクタは以下のような構文です。 </para> <funcsynopsis> <funcprototype> <funcdef>$myVal = new XML_RPC_Value</funcdef> <paramdef></paramdef> </funcprototype> <funcprototype> <funcdef>$myVal = new XML_RPC_Value</funcdef> <paramdef><parameter>$stringVal</parameter></paramdef> </funcprototype> <funcprototype> <funcdef>$myVal = new XML_RPC_Value</funcdef> <paramdef><parameter>$scalarVal</parameter></paramdef> <paramdef><parameter>&apos;int&apos; | &apos;boolean&apos; | &apos;string&apos; | &apos;double&apos; | &apos;dateTime.iso8601&apos; | &apos;base64&apos;</parameter></paramdef> </funcprototype> <funcprototype> <funcdef>$myVal = new XML_RPC_Value</funcdef> <paramdef><parameter>$arrayVal</parameter></paramdef> <paramdef><parameter>&apos;array&apos; | &apos;struct&apos;</parameter></paramdef> </funcprototype> </funcsynopsis> <para> 最初のコンストラクタは空の値を生成します。使用する前に、必ず <function>addScalar</function>、 <function>addArray</function> あるいは <function>addStruct</function> で初期化しなければなりません。 </para> <para> 2 番目のコンストラクタはシンプルな文字列値を生成します。 </para> <para> 3 番目のコンストラクタはスカラ値を生成するために使用されます。 第 2 パラメータは、以下の例のように XML-RPC 型の名前である必要があります。 </para> <programlisting role="php"> <![CDATA[ $myInt = new XML_RPC_Value(1267, "int"); $myString= new XML_RPC_Value("Hello, World!", "string"); $myBool = new XML_RPC_Value(1, "boolean"); ]]> </programlisting> <para> 4 番目の形式のコンストラクタは、複雑な XML-RPC の値を作成するのに 使用されます。値が XML-RPC の <classname>配列</classname> である場合は 単純な配列、<classname>構造体</classname> の場合は連想配列を 第 1 パラメータに指定します。配列の要素は <emphasis> <classname>XML_RPC_Value</classname> オブジェクトである必要があります </emphasis>。例えば以下のようになります。 </para> <programlisting> <![CDATA[ $myArray = new XML_RPC_Value(array( new XML_RPC_Value("Tom"), new XML_RPC_Value("Dick"), new XML_RPC_Value("Harry")), "array"); $myStruct = new XML_RPC_Value(array( "name" => new XML_RPC_Value("Tom"), "age" => new XML_RPC_Value(34, "int"), "geek" => new XML_RPC_Value(1, "boolean")), "struct"); ]]> </programlisting> </refsect2> <refsect2 id="package.webservices.xml-rpc.api.value.methods" xreflabel="XML_RPC_Value methods"> <title>メソッド</title> <refsect3> <title><function>addScalar</function></title> <funcsynopsis> <funcprototype> <funcdef>$ok = $val->addScalar</funcdef> <paramdef><parameter>$stringVal</parameter></paramdef> </funcprototype> <funcprototype> <funcdef>$ok = $val->addScalar</funcdef> <paramdef><parameter>$scalarVal</parameter></paramdef> <paramdef><parameter>&apos;int&apos; | &apos;boolean&apos; | &apos;string&apos; | &apos;double&apos; | &apos;dateTime.iso8601&apos; | &apos;base64&apos;</parameter></paramdef> </funcprototype> </funcsynopsis> <para> <parameter>$val</parameter> が空の <classname>XML_RPC_Value</classname> だった場合、このメソッドは そこにスカラ値を設定します。すでに <parameter>$val</parameter> に スカラ値が設定されていた場合、新たにスカラ値が追加されることはなく <literal>0</literal> が返されます。すべての処理がうまく終了した場合は <literal>1</literal> が返されます。 </para> <para> <parameter>$val</parameter> が <classname>配列</classname> だった場合は特別で、スカラ値が配列に追加されます。 </para> </refsect3> <refsect3> <title><function>addArray</function></title> <funcsynopsis> <funcprototype> <funcdef>$ok = $val->addArray</funcdef> <paramdef><parameter>$arrayVal</parameter></paramdef> </funcprototype> </funcsynopsis> <para> 空の <classname>XML_RPC_Value</classname> を、 <parameter>$arrayVal</parameter> で指定した内容の <classname>配列</classname> に変換します。詳細な情報は、4 番目の コンストラクタの書式を参照ください。 </para> </refsect3> <refsect3> <title><function>addStruct</function></title> <funcsynopsis> <funcprototype> <funcdef>$ok = $val->addArray</funcdef> <paramdef><parameter>$assocArrayVal</parameter></paramdef> </funcprototype> </funcsynopsis> <para> 空の <classname>XML_RPC_Value</classname> を、 <parameter>$assocArrayVal</parameter> で指定した内容の <classname>構造体</classname> に変換します。詳細な情報は、4 番目の コンストラクタの書式を参照ください。 </para> </refsect3> <refsect3> <title><function>kindOf</function></title> <funcsynopsis> <funcprototype> <funcdef>$kind = $val->kindOf</funcdef> <paramdef></paramdef> </funcprototype> </funcsynopsis> <para> 値の型を表す文字列 <literal>struct</literal>、<literal>array</literal> あるいは <literal>scalar</literal> を返します。もし値が まだ初期化されていない場合は <literal>undef</literal> を返します。 </para> </refsect3> <refsect3> <title><function>serialize</function></title> <funcsynopsis> <funcprototype> <funcdef>$outString = $val->serialize</funcdef> <paramdef></paramdef> </funcprototype> </funcsynopsis> <para> 値を、XML-RPC 形式の文字列で返します。 </para> </refsect3> <refsect3> <title><function>scalarval</function></title> <funcsynopsis> <funcprototype> <funcdef>$scalarVal = $val->scalarval</funcdef> <paramdef></paramdef> </funcprototype> </funcsynopsis> <para> <function>$val->kindOf</function> == 'scalar' の場合、 このメソッドは PHP 言語のスカラ値を返します(Base64 デコード処理は自動的に行われます)。 </para> </refsect3> <refsect3> <title><function>scalartyp</function></title> <funcsynopsis> <funcprototype> <funcdef>$typeName = $val->scalartyp</funcdef> <paramdef></paramdef> </funcprototype> </funcsynopsis> <para> <function>$val->kindOf</function> == 'scalar' の場合、 このメソッドはスカラの型を表す文字列を返します。先に述べたとおり、 <literal>i4</literal> は常に <literal>int</literal> に変換されます。 </para> </refsect3> <refsect3> <title><function>arraymem</function></title> <funcsynopsis> <funcprototype> <funcdef>$xmlrpcVal = $val->arraymem</funcdef> <paramdef><parameter>$n</parameter></paramdef> </funcprototype> </funcsynopsis> <para> <parameter>$val</parameter> で表される配列から、 <parameter>$n</parameter> 番目の要素を返します。 返される値は <classname>XML_RPC_Value</classname> オブジェクトです。 </para> </refsect3> <refsect3> <title><function>arraysize</function></title> <funcsynopsis> <funcprototype> <funcdef>$len = $val->arraysize</funcdef> <paramdef></paramdef> </funcprototype> </funcsynopsis> <para> <parameter>$val</parameter> が <classname>array</classname> の場合、その配列の要素数を返します。 </para> </refsect3> <refsect3> <title><function>structmem</function></title> <funcsynopsis> <funcprototype> <funcdef>$xmlrpcVal = $val->structmem</funcdef> <paramdef><parameter>$memberName</parameter></paramdef> </funcprototype> </funcsynopsis> <para> <parameter>$val</parameter> で表される構造体から、 <parameter>$memberName</parameter> に対応する要素を返します。 返される値は <classname>XML_RPC_Value</classname> オブジェクトです。 </para> </refsect3> <refsect3> <title><function>structeach</function></title> <funcsynopsis> <funcprototype> <funcdef>list($key,$value) = $val->structeach</funcdef> <paramdef></paramdef> </funcprototype> </funcsynopsis> <para> <parameter>$val</parameter> が構造体の場合に、次の 「キー・値」の組み合わせを返します。<xref linkend="package.webservices.xml-rpc.api.value.methods.structreset" /> も参照ください。 </para> </refsect3> <refsect3 id="package.webservices.xml-rpc.api.value.methods.structreset" xreflabel="structreset()"> <title><function>structreset</function></title> <funcsynopsis> <funcprototype> <funcdef>$val->structreset</funcdef> <paramdef></paramdef> </funcprototype> </funcsynopsis> <para> <parameter>$val</parameter> で表される構造体について、 <function>structeach</function> の内部ポインタを構造体の先頭に戻します。 </para> </refsect3> </refsect2> </refsect1> <refsect1 id="package.webservices.xml-rpc.api.server" xreflabel="XML_RPC_Server"> <title>XML_RPC_Server</title> <para> このクラスの現在の実装は、できる限りシンプルであることを心がけています。 基本的には、コンストラクタがすべての仕事をこなします。最低限の例は 以下のとおりです。 </para> <programlisting role="php"> <![CDATA[ function foo ($params) { ... } $s = new XML_RPC_Server(array("examples.myFunc" => array("function" => "foo"))); ]]> </programlisting> <para> これは、サーバで実行させたい仕事をすべて行ってくれます。たったひとつの 引数は連想配列であり、メソッド名と関数名を対応させます。リクエストが 解析されると適切な関数が呼び出され、関数が返す <classname>XML_RPC_Response</classname> オブジェクトはシリアライズされて コール元に返されます。 </para> <para> ハンドラ関数 <function>foo</function> が何を行うのかについて、 もうすこし詳しく見てみましょう。 </para> <programlisting role="php"> <![CDATA[ function foo ($params) { global $XML_RPC_erruser; // ユーザエラーコードの値をインポート // $params は、受信した XML_RPC_Message オブジェクト if ($err) { // エラーが発生した場合 return new XML_RPC_Response(0, $XML_RPC_erruser+1, // ユーザエラー 1 "艦長、問題が発生しました。"); } else { // 処理が成功した際に返す値 return new XML_RPC_Response(new XML_RPC_Value("万事順調!", "string")); } } ]]> </programlisting> <refsect2> <title>ディスパッチマップ</title> <para> <function>XML_RPC_Server</function> コンストラクタの最初の引数は配列で、 <emphasis>ディスパッチマップ</emphasis>と呼ばれます。この配列の中にあるのは、 あなたが定義した XML-RPC メソッドを提供するために必要な情報です。 </para> <para> ディスパッチマップは、連想配列の連想配列という形式になります。 外側の配列は個々のメソッドに対してひとつのエントリを持ち、 メソッド名が連想配列のキーとなります。キーに対応する値は別の連想配列で、 以下のようなメンバを保持します。 </para> <itemizedlist> <listitem> <para> <parameter>function</parameter> - このエントリは必須です。 XML-RPC メソッドを提供するために使用するグローバルスコープの関数名である 必要があります。 </para> </listitem> <listitem> <para> <parameter>signature</parameter> - このエントリは、メソッドがとりうる シグネチャ(<xref linkend="package.webservices.xml-rpc.api.server.signatures" /> を参照ください)を含む配列です。このエントリが存在する場合、 メソッドを割り振る前にサーバ側で引数の数や型のチェックを行います。 </para> </listitem> <listitem> <para> <parameter>docstring</parameter> - このエントリは、メソッドの ドキュメントを含む文字列です。ドキュメントには HTML マークアップを 含めることが可能です。 </para> </listitem> </itemizedlist> </refsect2> <refsect2 id="package.webservices.xml-rpc.api.server.signatures" xreflabel="Signatures"> <title>メソッドのシグネチャ</title> <para> シグネチャとは、メソッドの返り値の型やそのパラメータの型を示すものです。 メソッドは、すくなくともひとつのシグネチャを持っています。 </para> <para> サーバのディスパッチマップ内では、個々のメソッドはとりうるシグネチャの 配列を保持しています。各シグネチャの中身は型の配列で、最初のエントリは 返り値の型です。 </para> <para> 例を実行してみましょう。このような普通の PHP 関数を書こうとしている状況を 想定してください。 <programlisting role="php"> <![CDATA[ function is_8($input, $strict = false) { if ($strict) { return ($input === 8); } else { return ($input == 8); } } ]]> </programlisting> </para> <para> この関数を XML_RPC サーバで動作させようとすると、このように 書く必要があります。 <programlisting role="php"> <![CDATA[ function is_8($params) { // このパラメータは必須 $param = $params->getParam(0); if (!XML_RPC_Value::isValue($param)) { return $param; } $input = $param->scalarval(); // このパラメータはオプション $param = $params->getParam(1); if (!XML_RPC_Value::isValue($param)) { $strict = false; } else { $strict = $param->scalarval(); } if ($strict) { $answer = ($input === 8); } else { $answer = ($input == 8); } $val = new XML_RPC_Value($answer, 'boolean'); return new XML_RPC_Response($val); } ]]> </programlisting> </para> <para> これは、とりうる順番のシグネチャをすべて網羅したものです。 <programlisting role="php"> <![CDATA[ array( array('boolean', 'int'), array('boolean', 'int', 'boolean'), array('boolean', 'string'), array('boolean', 'string', 'boolean'), ) ]]> </programlisting> </para> <para> サーバはこのようにしてインスタンス化します。 <programlisting role="php"> <![CDATA[ $server = new XML_RPC_Server( array( 'isan8' => array( 'function' => 'is_8', 'signature' => array( array('boolean', 'int'), array('boolean', 'int', 'boolean'), array('boolean', 'string'), array('boolean', 'string', 'boolean'), ), 'docstring' => '値は 8 ですか?' ), ), 1, 0 ); ]]> </programlisting> </para> <para> 使いやすさを考慮し、XML-RPC の型を表す文字列がグローバル変数として コード化されています。 </para> <programlisting role="php"> <![CDATA[ $XML_RPC_I4 = 'i4'; $XML_RPC_Int = 'int'; $XML_RPC_Boolean = 'boolean'; $XML_RPC_Double = 'double'; $XML_RPC_String = 'string'; $XML_RPC_DateTime = 'dateTime.iso8601'; $XML_RPC_Base64 = 'base64'; $XML_RPC_Array = 'array'; $XML_RPC_Struct = 'struct'; ]]> </programlisting> </refsect2> <refsect2> <title>サーバからの応答の遅延</title> <para> あなたが作ろうとしているサーバでは、何らかの理由(たとえば セキュリティ認証など)によりリクエストに対する応答をいったん保留したい こともあるでしょう。コンストラクタの 2 番目の引数に <literal>0</literal> を渡すと、お望みの効果が得られます。その後、 サーバクラスの <function>service</function> メソッドを使用して リクエストを処理すればよいのです。たとえば以下のようになります。 </para> <programlisting role="php"> <![CDATA[ $s = new XML_RPC_Server($myDispMap, 0); // ... 何らかの他の処理をここで行う $s->service(); ]]> </programlisting> </refsect2> <refsect2> <title>失敗の報告</title> <para> サーバが返す失敗コードは、グローバルの <literal>$xmlrpcerruser</literal> が指す値に 1 を加えた値から開始するべきです。 </para> <para> サーバが返す標準的なエラーには以下のようなものがあります。 </para> <variablelist> <varlistentry> <term> <literal>1</literal> <phrase>Unknown method</phrase> </term> <listitem> <para> サーバが関知しないメソッドの実行を要求された際に返されます。 </para> </listitem> </varlistentry> <varlistentry> <term> <literal>2</literal> <phrase>Invalid return payload</phrase> </term> <listitem> <para> このエラーは、実際のところサーバやコードではなくクライアント側で 発生します。しかし、これはサーバが自分で理解できない何かを返したことを 示します。 </para> </listitem> </varlistentry> <varlistentry> <term> <literal>3</literal> <phrase>Incorrect parameters</phrase> </term> <listitem> <para> サーバがメソッドに対応したシグネチャを保持しており、クライアントから 渡されたパラメータがいずれのシグネチャにも一致しなかった際に発生します。 </para> </listitem> </varlistentry> <varlistentry> <term> <literal>4</literal> <phrase>Can't introspect: method unknown</phrase> </term> <listitem> <para> このエラーは、組み込みの <function>system.*</function> メソッドから 発生するもので、サーバ上で未定義のメソッドを実行しようとした際に起こります。 </para> </listitem> </varlistentry> <varlistentry> <term> <literal>5</literal> <phrase>Didn't receive 200 OK from remote server</phrase> </term> <listitem> <para> このエラーは、サーバからの応答として HTTP/1.1 200 OK が戻ってこなかった際に クライアント側で発生します。エラーの詳細な情報は、上のメッセージの最後に 付け加えられます。 </para> </listitem> </varlistentry> <varlistentry> <term> <literal>100-</literal> <phrase>XML parse errors</phrase> </term> <listitem> <para> 発生した障害の XML パーサエラーコードに 100 を加えたものを返します。 返される <varname>faultString</varname> の中には、入力 XML ストリームの どこでパースエラーが発生したのかが示されています。 </para> </listitem> </varlistentry> </variablelist> </refsect2> </refsect1> <refsect1 id="package.webservices.xml-rpc.api.dump" xreflabel="XML_RPC_Dump"> <title>XML_RPC_Dump</title> <para> このクラスは、XML_RPC_Value オブジェクト内のデータの 文字列表現を生成します。 </para> </refsect1> <refsect1 id="package.webservices.xml-rpc.api.other" xreflabel="other"> <title>その他の関数</title> <para> 以下は XML_RPC オブジェクトの外部にある関数です。 </para> <refsect2> <title><function>XML_RPC_encode</function></title> <funcsynopsis> <funcprototype> <funcdef>$rpc = XML_RPC_encode</funcdef> <paramdef><parameter>$php_val</parameter></paramdef> </funcprototype> </funcsynopsis> <para> PHP のネイティブデータ型を受け取り、それを XML_RPC オブジェクト型に 変換します。 </para> </refsect2> <refsect2> <title><function>XML_RPC_decode</function></title> <funcsynopsis> <funcprototype> <funcdef>$values = XML_RPC_decode</funcdef> <paramdef><parameter>$XML_RPC_val</parameter></paramdef> </funcprototype> </funcsynopsis> <para> XML_RPC オブジェクト型のメッセージを受け取り、それを PHP の ネイティブデータ型に変換します。 </para> </refsect2> </refsect1> </refentry> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t sgml-parent-document:nil sgml-default-dtd-file:"../../../../manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 --> http://cvs.php.net/co.php/peardoc/ja/package/webservices/xml-rpc/examples.xml?r=1.1&p=1 Index: peardoc/ja/package/webservices/xml-rpc/examples.xml +++ peardoc/ja/package/webservices/xml-rpc/examples.xml <?xml version="1.0" encoding="utf-8"?> <!-- $Revision: 1.1 $ --> <!-- EN-Revision: 1.7 Maintainer: takagi Status: ready --> <refentry id="package.webservices.xml-rpc.examples"> <refnamediv> <refname>例</refname> <refpurpose>XML_RPC パッケージの利用例</refpurpose> </refnamediv> <refsect1 id="package.webservices.xml-rpc.examples.latest"> <title> クライアントを使用して、PEAR の最新情報を取得する </title> <example> <title /> <programlisting role="php"> <![CDATA[ require_once 'XML/RPC.php'; /* * いちばん最近にリリースされた PEAR パッケージの情報を取得する */ $params = array(new XML_RPC_Value(1, 'int')); $msg = new XML_RPC_Message('release.getRecent', $params); $cli = new XML_RPC_Client('/xmlrpc.php', 'pear.php.net'); // $cli->setDebug(1); $resp = $cli->send($msg); if (!$resp) { echo 'Communication error: ' . $cli->errstr; exit; } if (!$resp->faultCode()) { $val = $resp->value(); $data = XML_RPC_decode($val); echo $data[0]['name'] . ' is at version ' . $data[0]['version']; } else { /* * xmlrpc.php スクリプトが遭遇した問題を * 報告する */ echo 'Fault Code: ' . $resp->faultCode() . "\n"; echo 'Fault Reason: ' . $resp->faultString() . "\n"; } ]]> </programlisting> </example> </refsect1> <refsect1 id="package.webservices.xml-rpc.examples.complete"> <title>クライアント - サーバ の組み合わせ</title> <example> <title /> <para> これがサーバ側のスクリプトです。localhost の web サーバの ドキュメントルートに、xmlrpc.php という名前で設置します。 </para> <programlisting role="php"> <![CDATA[ require_once 'XML/RPC/Server.php'; function returnTimes2($params) { $param = $params->getParam(0); // このエラーチェック構文は、リリース 1.3.0 で追加されました if (!XML_RPC_Value::isValue($param)) { return $param; } $val = new XML_RPC_Value($param->scalarval() * 2, 'int'); return new XML_RPC_Response($val); } $server = new XML_RPC_Server( array( 'times2' => array( 'function' => 'returnTimes2' ) ) ); ]]> </programlisting> <para> そしてこちらがクライアント側のスクリプトです。 </para> <programlisting role="php"> <![CDATA[ require_once 'XML/RPC.php'; $input = 8; $params = array(new XML_RPC_Value($input, 'int')); $msg = new XML_RPC_Message('times2', $params); $cli = new XML_RPC_Client('/xmlrpc.php', 'localhost'); // $cli->setDebug(1); $resp = $cli->send($msg); if (!$resp) { echo 'Communication error: ' . $cli->errstr; exit; } if (!$resp->faultCode()) { $val = $resp->value(); echo $input . ' times 2 is ' . $val->scalarval(); } else { /* * xmlrpc.php スクリプトが遭遇した問題を * 報告する */ echo 'Fault Code: ' . $resp->faultCode() . "\n"; echo 'Fault Reason: ' . $resp->faultString() . "\n"; } ]]> </programlisting> </example> </refsect1> </refentry> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t sgml-parent-document:nil sgml-default-dtd-file:"../../../../manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 --> http://cvs.php.net/co.php/peardoc/ja/package/webservices/xml-rpc/intro.xml?r=1.1&p=1 Index: peardoc/ja/package/webservices/xml-rpc/intro.xml +++ peardoc/ja/package/webservices/xml-rpc/intro.xml <?xml version="1.0" encoding="utf-8"?> <!-- $Revision: 1.1 $ --> <!-- EN-Revision: 1.2 Maintainer: takagi Status: ready --> <refentry id="package.webservices.xml-rpc.intro"> <refnamediv> <refname>導入</refname> <refpurpose></refpurpose> </refnamediv> <refsect1 id="package.webservices.xml-rpc.intro.general"> <title>概要の紹介</title> <para> XML-RPC は、XML を用いたリモートプロシージャコールを実現するために <ulink url="&url.userland;">Userland Software</ulink> が考案した フォーマットです。XML-RPC の web サイトは <ulink url="&url.xmlrpc;">www.XmlRpc.com</ulink> です。 </para> <para> 現時点で使用可能な XML-RPC の実装のほとんどは、データ交換に HTTP を使用しています。Perl や Python など他の言語での実装の一覧が <ulink url="&url.xmlrpc;">www.xmlrpc.com</ulink> にあります。 </para> <para> この PHP クラス群は、XML-RPC のクライアントおよびサーバを PHP で 記述するためのフレームワークを提供します。 </para> </refsect1> <refsect1 id="package.webservices.xml-rpc.intro.acknowledgements"> <title>謝辞</title> <para> このパッケージは、Useful Information Company の <ulink url="&url.usefulinc;">Edd Dumbill</ulink> によって最初に書かれました。 最も賞賛されるべきなのは彼です。最初のコードベースに対して貢献した 以下の人々は別として、そのコードは現在も Edd によって保守されています。 </para> <itemizedlist> <listitem> <para>Jim Winstead <email>jimw at php dot net</email></para> </listitem> <listitem> <para>Peter Kocks <email>peter.kocks at baygate dot com</email></para> </listitem> <listitem> <para>Nicolay Mausz <email>mausz at flying-dog dot com</email></para> </listitem> <listitem> <para>Ben Margolin <email>ben at wendy.auctionwatch dot com</email></para> </listitem> <listitem> <para>Dan Libby <email>dan at libby dot com</email></para> </listitem> <listitem> <para>Gaetano Giunta <email>g.giunta at libero dot it</email></para> </listitem> <listitem> <para>Idan Sofer <email>i_sofer at yahoo dot com</email></para> </listitem> <listitem> <para>Giancarlo Pinerolo <email>ping at alt dot it</email></para> </listitem> <listitem> <para>Justin Miller <email>justin at voxel dot net</email></para> </listitem> </itemizedlist> </refsect1> <refsect1 id="package.webservices.xml-rpc.intro.manifest"> <title>ファイル一覧 - パッケージ内のファイル</title> <titleabbrev>ファイル一覧</titleabbrev> <glosslist> <glossentry> <glossterm>Server.php</glossterm> <glossdef> <para> XML-RPC サーバクラス。サーバ機能を使用するするために、これを <function>include</function> します。 </para> </glossdef> </glossentry> <glossentry> <glossterm>RPC.php</glossterm> <glossdef> <para> XML-RPC クライアントクラス。クライアント機能を使用するために、これを <function>include</function> します。 </para> </glossdef> </glossentry> </glosslist> </refsect1> </refentry> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t sgml-parent-document:nil sgml-default-dtd-file:"../../../../manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 --> http://cvs.php.net/co.php/peardoc/ja/package/webservices/xml-rpc/support.xml?r=1.1&p=1 Index: peardoc/ja/package/webservices/xml-rpc/support.xml +++ peardoc/ja/package/webservices/xml-rpc/support.xml <?xml version="1.0" encoding="utf-8"?> <!-- $Revision: 1.1 $ --> <!-- EN-Revision: 1.2 Maintainer: takagi Status: ready --> <refentry id="package.webservices.xml-rpc.support"> <refnamediv> <refname>サポート</refname> <refpurpose>XML_RPC のサポートを受けるには</refpurpose> </refnamediv> <refsect1 id="package.webservices.xml-rpc.support.online"> <title>オンラインサポート</title> <para> このパッケージは<quote>あるがまま(as-is)</quote>で提供されており、 何らかの補償をしたりサポートの約束をしたりするものではありません。 しかし、PEAR ユーザメーリングリストや XML-RPC.com にて 非公式なアドバイスやヘルプを行っています。 </para> <itemizedlist> <listitem> <para> パッケージの使用法に関する質問は、 <ulink url="mailto:&email.pear.general;">PEAR ユーザメーリングリスト </ulink> を通じて行ってください。詳細は <ulink url="&url.pear.support;">こちらをご覧ください</ulink>。 </para> </listitem> <listitem> <para> XML-RPC についての一般的な質問には、Yahoo! グループの <ulink url="&url.xmlrpc.list;">XML-RPC メーリングリスト</ulink>が利用できます。 </para> </listitem> <listitem> <para> XML-RPC の使用法についての助言を得るには、<ulink url="&url.xmlrpc.discuss;">XML-RPC.com</ulink> の掲示板が便利です。 この掲示板の内容は、Yahoo! Groups のメーリングリストにも反映されます。 </para> </listitem> </itemizedlist> </refsect1> <refsect1 id="package.webservices.xml-rpc.support.jellyfish"> <title>クラゲ本</title> <para> <graphic fileref="http://www.oreilly.com/catalog/covers/progxmlrpc.s.gif" format="GIF" width="145" depth="190" align="right"></graphic> Simon St.Laurent や Joe Johnston とともに Edd Dumbill が書いた XML-RPC についての本が、O'Reilly and Associates より発売されています。 この本の表紙には、ちょっと目を引くクラゲが描かれています。 </para> <para> この本についての詳細は、<ulink url="&url.xmlrpc.book;">O'Reilly の web サイトから得られます</ulink>。 </para> <para> Edd は PHP に関する章を担当しており、実際に動作する例が収録されています。 その内容は、掲示板サーバを立ち上げ、O'Reilly の <ulink url="&url.meerkat;">Meerkat</ulink> サービスを用いて Web 上の ニュース記事に対するコメントを行うものです。 </para> <para> こうしたソフトウェアを書き上げた彼の労力のおかげで何らかの恩恵を受けた なら、ぜひこの本を購入することを考えてください。 </para> </refsect1> </refentry> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t sgml-parent-document:nil sgml-default-dtd-file:"../../../../manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 -->
« previous php.pear.doc (#6795) next »