Zend Framework の小ネタです。
Zend_Locale のキャッシュを無効にするには、Zend_Locale::disableCache(true); を呼ぶとマニュアルにはあります。
Speed up Zend_Locale and its subclasses
ですが、実際にはこれではダメで、次のようなコードで置き換える必要があります。
Zend_Locale_Format::setOptions(array('disableCache' => true));これはZend_Locale::disableCache(true);と同じ効果を持つので、両方書く必要はありません。
disableCache() を呼んでも Zend_Locale_Format の内部状態は影響を受けず、さらに Zend_Locale_Format の機能が利用される際に、そちらで上書きされてしまうのが原因です。
Zend_Date のように Zend_Locale_Format へ依存しているクラスを利用する場合、Zend_Locale::disableCache() は機能しないでしょう。
一見バグのようですが、どうでしょう?
単純に Zend_Locale::disableCache() の中で Zend_Locale_Format::setOptions(array('disableCache' => true)); を呼べば良いかというと、ちょっと違う気がします。
設計から見直す必要があるでしょうか。
以上の内容とは別に、キャッシュが一度セットされると disableCache() で無効にできないというバグがありましたので、そちらは patch を書いておきました。
[#ZF-11966] Problem with disabling cache in Zend_Locale
つたない英語なのでフォロー頂けるとありがたいです(^^;





