もうだいぶ経ちますが、CakePHPが2.4.0から2.4.1にアップグレードされました。

CakePHP 2.4.1 released

ここで、

Method signatures of Behavior callbacks was corrected. If you are using PHP5.4 you may have to update the method signatures of your behaviors to resolve any E_STRICT errors.

とされている変更においてあまり解説されてないようなのでメモしておきます。

要するに継承元になるであろうクラスのメソッドシグネチャが変更されたので、 Declaration of Methods should be Compatible with Parent Methods in PHP とかいう類のエラーが出ないように(PHP5.4以上を使っているなら)各自変更してくださいよということです。

でもその変更箇所が特にリストアップされてはいないようなのでソースを直接調べるわけですが、そこは Github の履歴を参照すれば比較的簡単に見つけられます。とは言えいちいち調べるのも面倒な人のためにメモしておきます。

で、上記のログには Behavior としか書かれていませんが こっそり ・・・Model::afterSave も変更してるじゃねぇかヽ(`Д´#)ノ 

(などと、どこかでボヤキ混じりのブログが公開されるだろうと期待していたのですが、、、皆さん粛々と業務遂行されておられるのですね。)

以下のメソッドシグネチャの変更がありました。5つのメソッドにおいて、 $options = array() が追加されています。

クラスメソッド変更前変更後
ModelafterSave$created$created, $options = array()
ModelBehaviorbeforeValidateModel $modelModel $model, $options = array()
beforeSaveModel $modelModel $model, $options = array()
afterSaveModel $model, $createdModel $model, $created, $options = array()
afterFindModel $model, $primaryModel $model, $created, $primary = false

以上です。