UPGRADING FROM V3.0
Kohana 3.0 to 3.1 Upgrade Troubleshooting
内容をチェックして、なんとなく訳したのでメモ。
3.0.xからの移行点
※適当な抄訳です。意訳、誤訳多いと思いますので正確な情報は原文を確認してください。Request/Response
リクエストクラスは、リクエストとレスポンスに分かれました。レスポンスをセットする(コンテンツを返す)場合
3.0.xでは:$this->request->response = 'foo';3.1.xでは:
$this->response->body('foo');
HTTP status codeを返す場合
$this->response->status(404);
HTTP headersを返す場合
$this->response->headers('Content-Type', 'text/html')
リクエストクラスのプロパティのいくつかは、メソッドに変換されました
- Request::$controller -> Request::controller() - Request::$action -> Request::action() - Request::$directory -> Request::directory() - Request::$uri -> Request::uri()
Request::instance() は、Request::current() とRequest::initial()に置き換えられました。
通常は、Request::current() を使用してください。しかし(HMVCを用いてる時などに)最初の呼び出し元を確認する時は、Request::initial()を使用してください。Validation
バリデートクラスは、コンテキストをサポートするよう改善されており、これに伴い、APIも変更されています。また、組み込みのバリデーションルールから、コアロジックが分離され、コア部分は、「Validation」クラめルール部分は、「Valid」クラスに分かれました。
Context
バリデートクラスに、コンテキストがサポートされましたので、rule()とcallback()を結びつけることができるようになりました。そしてrule()は簡単に両方を処理することができます。古い使用方法:
rule('password', 'matches', array('repeat_password'))
新しい使用方法:
rule('password', 'matches', array(':validation', 'password', 'repeat_password'))
3番目の引数は、現在のルールに渡される全てのパラメータが含まれています。
Valid::matches()関数を見てみると:
public static function matches($array, $field, $match)
':validation'は第1引数、'password'は第2引数(チェックするフィールド)、'repeat_password'は第3引数(一致させたいフィールド)
':validation'は、実際のバリデートクラスに置き換えるように、バリデーションクラスに伝える特別なコンテキスト変数です。この方法は以前のコールバックの動作と何ら変わらないように見えますが、もっと強力に使えますよ。
コンテキスト変数:
- :validation - バリデーションオブジェクト
- :field - フィールドの名前と同等 (rule('username', 'min_length', array(':field', 4)))
- :value - フィールドの値
ルールには、ブール値を返す関数であれば、なんでも使用することができます。
Filters
フィルターはバリデーションクラスから削除されました。代わりになるものはなく、もしORMと共に使用していた場合は、ORM側で新しいメカニズムで動作します。
Cookie salts
クッキークラスは、saltが何も設定されていなければ例外をスローし、デフォルトは何も設定されなくなりました。ですからしてbootstrapにsaltの設定が必要になります。
Cookie::$salt = 'foobar';
または、各々のアプリケーションでクッキークラスを拡張し定義します。
class Cookie extends Kohana_Cookie { public static $salt = 'foobar'; }
Controller constructor
もし何らかの理由で、コントローラーのコンストラクタをオーバーロードする場合は、以下のように記述してください。public function __construct(Request $request, Response $response)
index.php / bootstrap.php
変更点主な変更は、リクエストの実行が、bootstrap.phpからindex.phpに移動したことです。これにより、テストを行う場合でもbootstrapは1つで済みます。
そして、bootstrapは只のセットアップ環境設定ファイルとなり、実行するものではなくなりました。
404 Handling
Kohanaは、404等のHTTPステータスコードの例外処理が組み込まれました。もしReflectionExceptionを使用した404リダイレクトを使用している場合は、HTTP_Exception_404を使用するようにしてください。より詳しい情報は、error handlingを参照してください。Form Class
Form::open()を使用した場合のデフォルト動作が変更されました。パラメーターが空の場合のaction属性は、以前は"現在のURI"でしたが、"/"(ホームページ)になります。