アクティブレコードで__PHP_Incomplete_Class が表示された場合の対処方法

アクティブレコードで得たDBオブジェクトをそのままシリアライズ(serialize)する事は可能です。しかし、それをアンシリアライズ(unserialize)する時に「定義されていないオブジェクトだぞ!」と怒られてしまいます。activeRecordで利用するmodelのオブジェクトの定義が正常にされていないようです。

それで、調べてみると、activeRecordでautoloadは正常に呼ばれているようでしたが、私は、ファイル名と、クラス名を小文字と大文字、それぞれ別々に書いてしまったため正常にファイルが読み込めなかったようでした。

そこで、解決方法として以下のようにしています。

<?php
// unserializeにて、クラスの定義があった場合、事前に読み込んでおかないといけない。
// アクティブレコードの場合は、既に定義しているモデルPathからファイルを読み込む
ini_set('unserialize_callback_func', 'unserializeLoadClass');
function unserializeLoadClass($class) {
activerecord_autoload(strtolower($class));
}

同じような現象で悩んでいた方はお試しください。

スポンサードリンク

コメントを残す

メールアドレスが公開されることはありません。