PHP在反序列化后丢失了对象内的数据

时间:2015-01-12 19:14:35

标签: php serialization deserialization

我首先通过序列化将一个USER对象存储在会话中,而不是试图在同一页面上使用它来测试它,但是它不会检索初始化的数据,所有内容都是空白的。

$user = new User();
echo '<br/>' . $user->getUsername(); // Gives me corerct data
userSession(serialize($user)); // Stored into session

$userObj = unserialize($_SESSION['userObj']); // Still get an object of type User
echo $userObj->getUsername(); // This returns blank unlike the first call

如果有人可以帮助我,我们将不胜感激,谢谢!

userSession代码

function userSession($userObj){
    session_start();
    $_SESSION['userObj'] = $userObj;
}

USER CLASS

class User{
    protected $pdo;
    private $id, $username, $banned, $email, $first_name, $last_name, $mobile_phone, $city, $address, $postal_code, $user_type, $active;
// Create a user
    public function __construct(){
        $con = new Connection();
        try{
             $this->pdo = $con->getConnection();
        }catch (PDOException $e){
                echo $e->getMessage(); // Store to file
        }
    }

1 个答案:

答案 0 :(得分:0)

不是序列化完整的User类,而是尝试仅序列化数据并使用相同的数据创建新对象。
基本上,您要做的是添加User->getData()User->setData(),其中一个将返回与您可以保存的格式相关的所有数据(JSON,可序列化数组),另一个允许您要创建一个新的User对象并重新加载此数据。