zz log

zaininnari Blog

CakePHP 2.3.10 変更点

公式アナウンス

今回のリリースはバグフィックスリリースです。 パフォーマンスの改善、PHP5.5.2でのSessionの動作改善、Emailクラスの改善が主な変更点になります。

また、CakePHP2.3系のリリース方針についてアナウンスがあり、CakePHP2.6.0までセキュリティフィックスを継続していくそうです。

今回は同時に CakePHP2.4 もリリースされています。 CakePHP3 の開発も CakePHP2系以上にリソースをつぎ込んで開発が進められており、 片手間ではコミットを追いきれないほどです。

主な変更点

ドキュメント・テストケース・小さな修正は除きます。

全般

  • null チェックが is_null から === null へ統一され、パフォーマンスを改善した
    • === nullis_null より 40倍程度高速に動作する。

Network/Email

  • AbstractTransport::config が引数を直接代入していたのを、$config + $this->_configになり、デフォルト値が省略できるようになった。
    • SmtpTransport::config でもarray_merge($default, $this->_config, $config)に変更になった。
  • CakeEmail::_renderTemplates 'layout' が null の場合、レイアウトが描画されなくなった
    • ドキュメントでは null で描画と停止できると書いてあるが、null をそのまま View::render に渡すと、null はデフォルトレイアウトを呼び出す意味を持っているので、正しい挙動ではなかった。
    • null を渡すと、View::render で描画されない false に内部で置き換わるようになった。

Utility/CakeTime

  • CakeTime::timeAgoInWords 過去の時間を約1日前などと大雑把に表現できるようになった。また、翻訳も可能にした。
  • CakeTime::CakeTime strtotime("0000-00-00 00:00:00") の結果が32bit(FALSE)と64bit(-62169955200)で異なるため、false を返すよう修正

Utility/CakeNumber

  • CakeNumber::precision 整数区切に「,」を使う国・地域の場合、結果が正しくなかったのを修正

Model/AclNode

  • AclNode::node 結合が'LEFT'から'INNER'へ変更し、パフォーマンスの向上を図る
    • 2.3.9で変更されなかった部分が今回変更され、すべて'INNER'で結合されるようになった。

Utility/Sanitize

  • Sanitize::paranoid データベースとのコネクションを開くのを引数チェックの前から後へ変更し、パフォーマンスを改善した

Routing/Route

  • RedirectRoute::parse options['persist'] を正しく運用するよう変更された

Model/Model

  • Model 使用されていない deleteQuery insertQuery が削除された
    • 1.3 までの機能であり、利用ようとしても利用できなく、ユーザーに混乱を招くため、削除された。

Console/ShellDispatcher

  • ShellDispatcher::_initEnvironment 'ROOT' 'APP_DIR' 'APP' の定数が事前に定義済みかどうかを判別するようになり、外部から制御できるようになった。

Model/Datasource

  • CakeSession::_defaultConfig 'session.auto_start' => 0,が削除された
    • PHP5.5.2では、session.auto_startPHP_INI_PERDIR(php.ini、.htaccesshttpd.conf あるいは .user.ini (PHP 5.3 以降の場合) で設定可能なエントリ)になり、エラーが発生してしまうため、これを回避するために、削除された。この部分は、session.auto_start の初期値を再設定していたものであるため、(独自でphp.ini等を変更していない限り)下位バージョンには影響はない。

Model/Datasource/Database

  • Sqlite::buildColumn bigint primary key が正しく生成されるようになった

Cache/Engine

  • FileEngine::key Windows 環境で、ファイル名として使えない文字をアンダーラインに変更する処理を追加
    • '<', '>', '?', ':', '|', '*', '"'が処理されるようになった