<?xml version="1.0" encoding="UTF-8"?>
<!-- Reviewed: no -->
<!-- EN-Revision: 17175 -->
<sect1 id="zend.http.client.migration">

    <title>前バージョンからの移行</title>

    <para>
        <classname>Zend_Http_Client</classname>の外部 <acronym>API</acronym> は Zend Framework の 1.x ブランチと整合したままですが、
        <classname>Zend_Http_Client</classname>とその関連したクラスの内部構造に若干の変化がもたらされました。
    </para>

    <para>
        これらの変化は、<classname>Zend_Http_Client</classname>を用いたコードに影響すべきではありません
        しかし、オーバーロードするか、または拡張する<acronym>PHP</acronym>クラスに影響するかもしれません。
        アプリケーションが<classname>Zend_Http_Client</classname>をサブクラスとするなら、
        Zend Frameworkをアップグレードする前に以下の変化に目を通すことを大いに勧めます。
    </para>

    <sect2 id="zend.http.client.migration.tozf19">
        <title>1.8 以前から 1.9 以降への移行</title>
        <sect3 id="zend.http.client.migration.tozf19.fileuploadsarray">
            <title>内部のアップロードされたファイル情報ストレージに変更</title>

            <para>
                Zend Framework のバージョン 1.9 では、
                アップロードされるファイルに関する情報を
                <classname>Zend_Http_Client</classname>が内部的に格納し、
                <methodname>Zend_Http_Client::setFileUpload()</methodname>メソッドを用いてセットする
                方法で変化がありました。
            </para>

            <para>
                複数のファイルを同じフォーム名で
                ファイルの配列としてアップロードできるように
                この変化が取り入れられました。
                この問題に関するより多くの情報は、
                <ulink url="http://framework.zend.com/issues/browse/ZF-5744">このバグ・レポート</ulink>
                で見つけることができます。
            </para>

            <example id="zend.http.client.migration.tozf19.fileuploadsarray.example">
                <title>アップロードされたファイル情報の内部ストレージ</title>

                <programlisting language="php"><![CDATA[
// ファイル２つを同じフォーム要素名でファイルの配列としてアップロード
$client = new Zend_Http_Client();
$client->setFileUpload('file1.txt',
                       'userfile[]',
                       'some raw data',
                       'text/plain');
$client->setFileUpload('file2.txt',
                       'userfile[]',
                       'some other data',
                       'application/octet-stream');

// Zend Framework の 1.8 以前では、
// protected メンバー $client->files の値はこうです:
// $client->files = array(
//     'userfile[]' => array('file2.txt',
                             'application/octet-stream',
                             'some other data')
// );

// Zend Framework の 1.9 以降では、$client->files の値はこうです:
// $client->files = array(
//     array(
//         'formname' => 'userfile[]',
//         'filename' => 'file1.txt,
//         'ctype'    => 'text/plain',
//         'data'     => 'some raw data'
//     ),
//     array(
//         'formname' => 'userfile[]',
//         'filename' => 'file2.txt',
//         'formname' => 'application/octet-stream',
//         'formname' => 'some other data'
//     )
// );
]]></programlisting>
            </example>

            <para>
                ご覧の通り、この変化は1つ以上のファイルで同じフォーム要素名を使えるようにします。
                しかし、それは微妙な下位互換性変化を取り入れるので、そのように注意するべきです。
            </para>
        </sect3>

        <sect3 id="zend.http.client.migration.tozf19.getparamsrecursize">
            <title>Zend_Http_Client::_getParametersRecursive() の廃止</title>

            <para>
                バージョン1.9から始まりますが、
                protected メソッド <methodname>_getParametersRecursive()</methodname> はもはや
                <classname>Zend_Http_Client</classname> に使われず、廃止されます。
                それを使うと、E_NOTICE メッセージが<acronym>PHP</acronym>によって発生する原因になります。
            </para>

            <para>
                <classname>Zend_Http_Client</classname>をサブクラスとして、このメソッドを呼ぶなら、
                その代わりに <methodname>Zend_Http_Client::_flattenParametersArray()</methodname>
                static メソッドを使用することに目を向けるべきです。
            </para>

            <para>
                また、この<classname>_getParametersRecursive</classname>は protected メソッドなので、
                この変化は<classname>Zend_Http_Client</classname>をサブクラスとするユーザーに
                影響を及ぼすだけです。
            </para>
        </sect3>
    </sect2>
</sect1>
