HTTP_Request2にaddQueryStringはひつよう?

リクエストというコンポーネントの責務としてクエリーの組み立ては必要なのかというと私は懐疑的にならざるおえません。
http://d.hatena.ne.jp/sotarok/20081121/1227251508

<?php
require_once 'HTTP/Request2.php';

$url2 = new Net_URL2('http://example.net');
$url2->setQueryVariable('queryKey1', 'word1');
$url2->setQueryVariable('query Key2', 'w$ord 2');
echo $url2->getURL(), PHP_EOL; 
// http://example.net?queryKey1=word1&query%20Key2=w$ord 2

/* $req2 = new HTTP_Request2($url2); **/
// or 
/* $req2->setUrl($url2); **/

個人的にはPEAR2_HTTP_Requestの取扱いどうなるんだろうと思う。と言うかまず名称が紛らわしい(笑)
http://svn.pear.php.net/wsvn/PEARSVN/HTTP_Request/trunk/src/HTTP/Request.php?op=file&rev=0&sc=0


個人的にHTTP_Request2の重要な変更点は、

  • Net/Socket非依存になったこと
  • ちゃんと一クラス一ファイルになったこと
  • implements SplSubject!
  • define()の山がなくなったこと

ですね。アダプターにcURLがあるのを見ると、永遠にインキュベーターっぽい雰囲気が漂ってる
Zend_Http_Client_Adapter_Curlより素敵。



<?php

//////おまけ///////////////////////////////////////////////////////
require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload();

$zfUriHttp = Zend_Uri_Http::fromString('http://example.net');
$zfUriHttp->setQuery(array('queryKey1' => 'word1', 'query Key2' => 'w$ord 2'));
echo $zfUriHttp->getUri(), PHP_EOL; 
// http://example.net?queryKey1=word1&query+Key2=w%24ord+2

$flipquery = array_flip(array('queryKey1' => 'word1', 'query Key2' => 'w$ord 2'));
array_walk($flipquery, create_function('&$v,$k', '$v = rawurlencode($v);'));
$query = array_flip($flipquery);
$zfUriHttp->setQuery($query);
echo $zfUriHttp->getUri(), PHP_EOL;
//http://example.net?queryKey1=word1&query%2520Key2=w%24ord+2

んがんぐ。



で、Zend_Uriまわり見てたら「throw new InvalidArgumentException」とか
やってるのがあったのでバグとして報告しました。
http://framework.zend.com/issues/browse/ZF-5035?page=com.atlassian.jira.ext.fisheye:fisheye-issuepanel
Zend_Exceptionでキャッチできないじゃん!バカバカバカ!
(Zend_Text_Figletにもあるっぽいけど)