下記の例の場合、オブジェクトをserialize関数でシリアライズ化して、セッションに保存したり、
セッションから取得後、unserialize関数でもとに戻す必要はあるでしょうか。
自分としては、下記の検証をして、不要だと思っていますが、この認識に誤りはあるでしょうか。
以下、検証したコードです。
class UserTest { private $num; private $name; public function __construct($num, $name) { $this->num = $num; $this->name = $name; } public function getNum() { return $this->num; } public function getName() { return $this->name(); } } $user = new UserTest(2, "taro"); $_SESSION["test"] = $user; $v = $_SESSION["test"]; var_dump($v);
■以下のように、目的通りに出力します。
object(UserTest)#2 (2) { ["num":"UserTest":private]=> int(2) ["name":"UserTest":private]=> string(4) "taro" }
□環境:
・php7.3、
・php.iniのsession.serialize_handler→php。
つまり、セッションにオブジェクトを保存する時に、メンバー変数にリソース型のデータがなければ(下記の引用サイトの警告の説明欄)、
$_SESSION["test"] =serialize($user);
上記のようにシリアライズ化してから保存する必要はないと考えています。セッションにstring型の値を保存するサンプルは多く見てきたのですが、オブジェクトを保存する例をなかなか見つけれなかったので、お尋ねさせて頂きました。
どうぞ、よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/04 23:32
2021/10/05 02:58