質問

誰も私を説明できますか、なぜこの場合のセッションでオブジェクトを取得するのか 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 失敗すると、シリアル化が失敗するはずです。あなたはしようとすることができます 機能リクエストを送信します.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top