オブジェクトのシリアル化と致命的なエラー
-
28-09-2019 - |
質問
誰も私を説明できますか、なぜこの場合のセッションでオブジェクトを取得するのか 2 プロパティ?
set_error_handler('my_error_handler');
session_start();
$obj = new myclass();
$_SESSION['obj'] = $obj;
$a->b();
class myclass
{
private $a = 1;
private $b = 2;
public function __sleep()
{
return array('a');
}
}
function my_error_handler($code, $error, $file = NULL, $line = NULL)
{
throw new ErrorException($error, $code, 0, $file, $line);
}
upd: :ここで私は取得することを期待しています:
1.致命的なエラー(合格した)
2.セッション中のオブジェクト(in セッションファイル) と 1 財産 (失敗した)
解決
この理由は、致命的なエラーが 致命的 エンジンに。その後、エンジンはもう機能することができません。
したがって、in php_var_serialize_intern
へ電話する __sleep
失敗します。ご覧のとおり、致命的なエラーは必要ありません。 __sleep
例外を投げていた、または何もなかった場合 __sleep
コールバックは、動作が似ています。
特に、動作は、変数のすべてのインスタンスプロパティを取得し、結果のハッシュテーブルを配列に属しているかのようにシリアル化することです。
これは有効なアプローチだと思いますが、おそらくあなたは __sleep
失敗すると、シリアル化が失敗するはずです。あなたはしようとすることができます 機能リクエストを送信します.
所属していません StackOverflow