Programmer's Reference Guide

Zend_Http_Client - 接続アダプタ

前バージョンからの移行

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

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

1.8 以前から 1.9 以降への移行

内部のアップロードされたファイル情報ストレージに変更

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

複数のファイルを同じフォーム名で ファイルの配列としてアップロードできるように この変化が取り入れられました。 この問題に関するより多くの情報は、 » このバグ・レポート で見つけることができます。

例1 アップロードされたファイル情報の内部ストレージ

  1. // ファイル2つを同じフォーム要素名でファイルの配列としてアップロード
  2. $client = new Zend_Http_Client();
  3. $client->setFileUpload('file1.txt',
  4.                        'userfile[]',
  5.                        'some raw data',
  6.                        'text/plain');
  7. $client->setFileUpload('file2.txt',
  8.                        'userfile[]',
  9.                        'some other data',
  10.                        'application/octet-stream');
  11.  
  12. // Zend Framework の 1.8 以前では、
  13. // protected メンバー $client->files の値はこうです:
  14. // $client->files = array(
  15. //     'userfile[]' => array('file2.txt',
  16.                              'application/octet-stream',
  17.                              'some other data')
  18. // );
  19.  
  20. // Zend Framework の 1.9 以降では、$client->files の値はこうです:
  21. // $client->files = array(
  22. //     array(
  23. //         'formname' => 'userfile[]',
  24. //         'filename' => 'file1.txt,
  25. //         'ctype'    => 'text/plain',
  26. //         'data'     => 'some raw data'
  27. //     ),
  28. //     array(
  29. //         'formname' => 'userfile[]',
  30. //         'filename' => 'file2.txt',
  31. //         'formname' => 'application/octet-stream',
  32. //         'formname' => 'some other data'
  33. //     )
  34. // );

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

Zend_Http_Client::_getParametersRecursive() の廃止

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

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

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


Zend_Http_Client - 接続アダプタ
blog comments powered by Disqus

Select a Version

Languages Available

Components

Search the Manual