トップ «前の日記(2006-07-18) 最新 次の日記(2006-07-20)» 編集

いしなお!

2002|01|02|03|04|05|06|07|08|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|02|03|04|07|
2009|03|10|

2006-07-19 [長年日記]

_ [PHP][Zend Framework] 0.1.3+αから0.1.5への移行

1470.netで使っているZend Frameworkを、0.1.3をベースにいくつかの自前の修正とincubatorの取り込みを行ったバージョンから、0.1.5(というか最新のtrunk)に移行中。以下作業メモ。

  • Zend_Db_Adapterのtype表記が、pdoMysql形式からPDO_MYSQL形式に変わったらしい。
  • Zend_Service_Amazon周りのバグはいつまで経ってもなおんねーなー。報告はしてあるんだけど。それともjpでしか再現しないんだろうか? んなことないはずなんだけど。まあいいや。自分でなおしたバージョンを使おう。
  • Zend_Db_Table::find()の挙動は相変わらず気に入らないんで、これも自分でなおしたバージョンに差し替え。っつーか、引数を配列にキャストして、要素が1個の場合はRowを返し、複数の場合はRowsetを返すって、すごい使いにくくないかなー。キーの配列を引数で渡すとき、たまたま要素数が1個になっちゃったときにRowで返される(受け取った側の扱いが変わる)のはすごく迷惑なんだけど。引数の型で戻り値の型を決めて欲しいなー。要望は出してあるんだけど。
  • Zend_Http_Clientはincubatorバージョンにある、Cookieやchunkedエンコーディング、gzipエンコーディング等に対応したものに差し替え。俺が使う範囲ではほとんどバグがなくなった。
  • Zend_Filter::isHostname()はまだ一文字要素があるホスト名(d.hatena.ne.jpとか)でtrueを返してくれないんで、その部分を差し替え。でもこれはバグトラックの方で進展があったんで、そのうち直ると思う。
  • Zend_Json_Decoder::_eatWhitespace()は、相変わらずパイプを使った正規表現だとはてな認証APIのJSONがデコードできないんで、ここも自前で修正。
  • そういやZend_Cacheはincubatorから標準添付に格上げされたんだね。incubatorの頃から使っているけど、memcachedバックエンドもちゃんと動いている。
  • 本当だったらZend_Controller_RewriteRouterに移行したいところだけど、全然互換性がない自前のルーターで来ちゃってるんで、今更乗り換えられない。失敗したかなー。そういやincubatorの方にUrlヘルパー(Railsでいうurlfor。tokenからurlへの逆解決)が置いてあるね。

ってところまで直したところ、手元では一通り問題なく動いているんだけど、いつサーバーに適用しようかなー。

あぶないあぶない

Zend_FeedをRSS 1.0に対応させる修正を忘れていた。これをやらないと日本のRSSのかなりの数に対応できなくなってしまう。ちなみにこれは自前パッチじゃなくて、昔Zend Frameworkのtracに報告されていたパッチ。

アップデートした

本サーバーの方もアップデートした。特に問題なさそうに見えるけれども、何か怪しげな挙動があったら教えてください。

_ [PHP][配列][ショートカット] 配列生成のショートカットがあるといいなー

PHPでは配列が便利なので多用するわけだけど、配列を生成するのにarray()関数を使う必要があり、ちょっとしたオプション指定なんかでいちいちarray()と書くのはとてもうざい。これって何かショートカット表現が用意されているとうれしいんじゃなかろうか。配列生成くらい関数を通さずに、文法の範囲で(短く)書けてもいいのになー。

本日のツッコミ(全6件) [ツッコミを入れる]
_ 寡黙な読者 (2006-07-19 17:08)

ツッコミ・コメントなしの Feed をできたら配信して欲しいんですが、ダメでしょうか?

_ ishinao (2006-07-19 17:13)

http://tdiary.ishinao.net/no_comments.rdf<br>でコメントなしRSSを配信するようにしました。<br><br># この間まで標準のRSSにコメントを含めないように改造していたんだけど、spam対策のためにtDiaryをアップデートしたときに、改造した部分が元に戻っていたのを忘れてました & 最新のtDiaryには標準でコメントなしRSSを配信する機能がついているので、それを有効にしました。

_ koyhoge (2006-07-20 00:37)

PHPの配列の件ですが、<br>JavaScriptのように<br><br>$ar = [1, 2, 3];<br><br>と書けると嬉しいなぁと思うことしきりです。

_ ishinao (2006-07-20 13:59)

最近よくJSON、YAMLを書いているんで、{"foo": "bar"}形式も捨てがたいです。<br><br>一瞬血迷って、<br>function _()<br>{<br> return func_get_args();<br>}<br><br>とかやっちゃおうかと思ったんですが、これじゃー連想配列は書けないしなー。

_ ふふ (2008-06-02 19:33)

Zend_Feedのパッチについて質問があります。<br>Zend_FeedをRSS 1.0に対応させるため下記のページにあるパッチをあてましたが修正されません。<br>もしアドバイスなどいただけたら幸いです。<br>サーバはLinuxで動かしています。<br><br>http://framework.zend.com/issues/browse/ZF-405

_ ishinao (2008-06-03 12:41)

>ふふさん<br><br>Zend Frameworkのコードは、1.0.0より前と1.0.0以降では大きく変わっているものが多いので、古い情報は基本的にあてになりません(ので、古いパッチは最新版では参考にならないことの方が多いと思います)。<br><br>Zend_Feedについては、1.0.0以降本格的に使っていないので、RSS 1.0への対応情報やパッチなどをもっておりませんが、もしも現在の最新版でもRSS 1.0に対応していないようなら、無理にZend_Feedを使うよりも、ほかのPHP用RSSパースライブラリを利用した方がいいような気がします。