Zend Framework 1.7(日本語)以前のバージョンから Zend Framework 1.7 またはそれ以降に更新する際は、 下記の移行上の注意点に注意すべきです。 Zend_Controllerディスパッチャインターフェイスの変更ユーザからの指摘により、 Zend_Controller_Action_Helper_ViewRenderer が使っているディスパッチャ抽象クラスのメソッドの中で ディスパッチャインターフェイスに存在しないものがあることに気づきました。 次のメソッドを追加し、 自作のディスパッチャが同梱の実装と共存できるようにしています。
Zend_File_Transferフィルタやバリデータを使用する際の変更点Zend_File_Transfer のバリデータが Zend_Config と組み合わせて使えないという指摘がありました。 名前つき配列を使っていなかったからです。 そこで、Zend_File_Transfer 用のすべてのフィルタとバリデータを作り直しました。 古い構文でも動作しますがこれは非推奨となり、 設定せずに実行すると PHP の notice が発生するようになります。 次のリストは、パラメータの使用法に関する変更点をまとめたものです。 Rename フィルタ
Example #1 rename フィルタの 1.6 から 1.7 での変更点
Count バリデータ
Example #2 count バリデータの 1.6 から 1.7 での変更点
Extension バリデータ
Example #3 extension バリデータの 1.6 から 1.7 での変更点
FilesSize バリデータ
さらに useByteString() メソッドのシグネチャも変わりました。 このメソッドの使用法は、 そのバリデータが生成するメッセージでバイト文字列を使うことを想定しているかどうかを調べるだけになりました。 フラグの値を設定するには setUseByteString() メソッドを使用します。 Example #4 filessize バリデータの 1.6 から 1.7 での変更点
Hash バリデータ
Example #5 hash バリデータの 1.6 から 1.7 での変更点
ImageSize バリデータ
Example #6 imagesize バリデータの 1.6 から 1.7 での変更点
Size バリデータ
Example #7 size バリデータの 1.6 から 1.7 での変更点
Zend_LocaleisLocale() を使う際の変更点コーディング規約に従うと、 isLocale() は boolean 値を返さなければなりませんでした。 以前のバージョンでは、成功したばあいに文字列を返していました。 リリース 1.7 では、互換性モードが追加されて文字列を返す古い挙動も使えます。 しかし、このばあいは新しい挙動に変更するようにというユーザ警告が発生します。 古い挙動の isLocale() が行っていた再ルーティングはもはや不要で、 すべての I18n は自分自身で再ルーティングを行います。 あなたのスクリプトを新しい API 用に変更するには、次のようにメソッドを使用します。 Example #8 isLocale() を 1.6 用から 1.7 用に変更する方法
2 番目のパラメータを使えば、 そのロケールが正しくて再ルーティングが発生しなかったかどうかがわかることに注意しましょう。
getDefault() を使用する際の変更getDefault() メソッドの意味が変わりました。 フレームワークにロケールが統合され、それを setDefault() で設定できるようになったからです。 このメソッドはもはやロケールチェインを返すことはなく、 フレームワークのロケールに設定されたものだけを返します。 あなたのスクリプトを新しい API 用に変更するには、次のようにメソッドを使用します。 Example #9 getDefault() を 1.6 用から 1.7 用に変更する方法
古い実装における getDefault() の 2 番目のパラメータはもはや使えないことに注意しましょう。 返り値がそれと同じ値となります。
Zend_Translate言語の設定言語の自動検出を使用したり Zend_Translate に手動で言語を設定したりする際に、 「追加に失敗」や「翻訳がない」などの理由で notice が発行されることがありました。 以前のリリースでは、場合によっては例外が発生することもありました。 その原因は、存在しない言語をユーザが指定した際に 何が問題なのかを知る簡単な方法がなかったことにあります。 そこで私たちは notice を発行させるようにしていたのです。 ログに記録が残るので、サポートしていない言語がリクエストされたことがわかるようになります。 そしてたとえ notice が発行されたとしても、コード自体は問題なく動作します。 しかし、xdebug のような独自のエラーハンドラ/例外ハンドラを使った場合など、 意図せぬものも含めてすべての notice を拾ってしまうこともあります。 そういった独自のハンドラは PHP の設定を上書きしてしまうことがあるからです。 これらの notice を発生させないようにするためには、新たなオプション 'disableNotices' を TRUE に設定するだけです。デフォルトは FALSE となっています。 Example #10 notice を取得せずに言語の設定を行う ここでは、'en' に対応しているところにユーザから 'fr' がリクエストされたものと家庭します。この翻訳は登録されていません。
この場合、存在しない言語 'fr' が指定されたことに関する notice が発行されます。 オプションを追加すると、この notice は発生しなくなります。
Zend_View
Zend Framework 開発陣は、1.7.5 より前のバージョンにおいて Zend_View::render() メソッドにローカルファイル読み込み (Local File Inclusion: LFI) 脆弱性の問題があることに気づきました。 1.7.5 より前のバージョンでは、このメソッドはデフォルトで 親ディレクトリを指す記法 ("../" や "..\") を含むビュースクリプトも指定できてしまいます。 フィルタリングをしていないユーザ入力が render() メソッドに渡されると、 LFI 攻撃を受ける可能性が出てきます。
Zend_View は、このようなビュースクリプトがリクエストされると デフォルトで例外を発生させるようになりました。 render() メソッドにおける LFI 保護機能の無効化多くの開発者から「ユーザの入力ではない 場面で、意図的にこれらの記法を使っていることもある」という指摘を受けたため、 特別なフラグを用意してデフォルトの保護機能を無効化できるようにしました。 無効化する方法は二通りあります。コンストラクタのオプションで 'lfiProtectionOn' キーを指定するか、あるいは setLfiProtection() メソッドをコールします。
|
|