我正在尝试将对象存储在会话中
然而,当我做以下操作时,我没有得到预期的输出
代码:
在会话中,我存储这样的对象-
$oEmployee = new Employee();
$_SESSION['Employee'] = $oEmployee;
我试着这样打印-
print_r($_SESSION['Employee']);
echo "<br>";
$oEmployee = new $_SESSION['Employee'];
print_r($oEmployee);
这是我得到的输出:
Employee Object
(
[m_sFirstName:private] => Sac
[m_sLastName:private] => Kos
[m_sPhone:private] => 9876543210
[m_sEmail:private] => sac@kos.com
[m_sPassword:private] => password
[m_iEmployeeId:private] => 1
)
Employee Object
(
[m_sFirstName:private] =>
[m_sLastName:private] =>
[m_sPhone:private] =>
[m_sEmail:private] =>
[m_sPassword:private] =>
)
知道出了什么问题吗?
问题出在您的线路上
$oEmployee = new $_SESSION['Employee'];
PHP将$_SESSION['Employee']
中的值强制转换为字符串,然后尝试实例化具有该名称的类(new
)。由于您没有向构造函数传递任何内容,因此会实例化一个空对象。
你想在那一行做什么?
您应该在将对象写入会话之前对其进行序列化:
$oEmployee = new Employee();
$_SESSION['Employee'] = serialize($oEmployee);
之后,您可以通过以下代码获得它:
$Employee = unserialize($_SESSION['Employee']);