zz log

zaininnari Blog

CakePHP 1.3.11 の変更点メモ


今回のCakePHP 1.3.11 リリースは、バグフィックス及びメンテナンスです。
約30のコミットがありましたが、大きな変更がなく、1.3系の安定感を感じます。


逆に、
2.0.0-alpha から 2.0.0-beta は、400を超えるコミットがあり、
1.3.10 から 1.3.11 とほぼ同じ期間しか経っていないことから、
2.0系の開発の活発さが伺えます。

RCの登場の暁には、内容を細かく見に行きたいと思います。

以下の方はアップデート推奨

  • CakePHP のテストを使用している
  • MySQL を使用している
  • FormHelper::create で送信先を手動でクエリをつけている
  • APCキャッシュを使用している

主な変更点

<?php
// before
str_replace($prefix, '', $table);

// after
preg_replace('/^' . preg_quote($prefix) . '/', '', $table);

preg_quote を読むと、
PHP5.2以下は、「-」がクオートされず、
よく使用される「/」もクオートされない。

なので、下記のどれかの方が良い気がする。
(MySQL では「\+*?[^]$(){}=!<>|:-/」というフィールドの作成は可能)

<?php
// 「-」と「/」をクオート
preg_replace('/^' . preg_quote(preg_quote($prefix, '-'), '/') . '/', '', $table);

// デリミタを「\ + * ? [ ^ ] $ ( ) { } = ! < > | : -」のどれかにする
preg_replace('#^' . preg_quote($prefix, '-') . '#', '', $table);
  • debugger の使用時、DATABASE_CONFIG の値が「***」と隠されるようになった
  • DboMysql::connect の mysql_connect(mysql_pconnect) が失敗した場合(false を返した場合)、そのメソッドが false を返すようになった。

今までは、 MySQL サーバへの接続が失敗した際、

<?php
// mysql_select_db($config['database'], $this->connection) の実際は、
mysql_select_db($config['database'], false)

となって、E_WARNING レベルのエラーが生成されていたが、今回の修正により、E_WARNING エラーが発生しなくなる。

  • APCキャッシュで永続化できないのを修正
    • apc_store の有効期間が0(または、指定しない)とき永続化されるが、ライブラリ側で、永続化を意図した 0 が指定された場合、前回のキャッシュから、0秒経過していると判断されてしまっていた。
    • 該当コミット
  • fixture の削除が作成の逆の順で行われるようになり、外部キーにより沿った処理をおこなうようになった。
  • 初期配置の home.ctp に iframe でバナーが読み込まれるようになり、重要な情報を知ることができるようになった。