сериализация — PHP теряет данные внутри объекта после десериализации

Я храню объект 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

Если кто-нибудь может помочь мне, это будет высоко ценится, спасибо!

Код пользователя

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

ПОЛЬЗОВАТЕЛЬСКИЙ КЛАСС

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
}
}

0

Решение

Вместо того, чтобы сериализовать полный User класс, попробуйте сериализовать только данные и использовать те же данные для создания нового объекта после.
По сути, вы должны добавить User->getData() а также User->setData() где один возвращает все релевантные данные в формате, который вы можете сохранить (JSON, serializable Array), а другой позволит вам создать новый User объект и загрузить эти данные обратно в.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector