在会话中存储对象;没有得到正确的输出


Storing objects in session; not getting proper output

我正在尝试将对象存储在会话中

然而,当我做以下操作时,我没有得到预期的输出

代码:

在会话中,我存储这样的对象-

    $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']);