【问题标题】:__PHP_Incomplete_Class Object even though class is included before session started__PHP_Incomplete_Class 对象,即使在会话开始之前包含类
【发布时间】:2015-06-08 14:34:35
【问题描述】:

我有一个“页面”类,它的构造包含一个“shoppingCart”类,启动一个会话,创建一个 shoppingCart 对象,然后将 $_SESSION['shoppingCart'] 设置为 shoppingCart 对象。

当我打印会话时,我仍然得到一个不完整的课程......

我认为这只会在您在上课之前开始课程时才会发生?

我的“页面”类中的代码如下所示:

include ('include/shopping_cart.php');

if (session_id() == '')
    {
    session_start();
    }

if (!isset($_SESSION['shoppingCart']))
    {
    $_SESSION['shoppingCart'] = new shoppingCart;
    }

我显然不明白这个......请帮忙!

【问题讨论】:

  • 这不是检查会话是否正在运行的正确方法:php.net/session_status。你需要展示对象本身。如果您希望它正确地被塞进 $_SESSION 中,它必须实现可序列化。
  • 谢谢 - 我不知道我需要在我的购物车类中实现可序列化!
  • 如果您不将其粘贴到 $_SESSION 中,那么就没有必要了。但是会话在关闭时被序列化,在 session_start() 时被反序列化。

标签: php class session


【解决方案1】:

要将对象存储在会话中,必须发生两件事:

1) 必须在会话开始之前定义类。 2) 类必须实现serializable

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-05
    • 1970-01-01
    • 2013-05-30
    • 1970-01-01
    • 2013-06-04
    • 2022-01-09
    • 1970-01-01
    相关资源
    最近更新 更多