1

我有点困惑。

到目前为止,我在 PHP 中使用 __autoload,并且我也在使用会话。这两件事一起工作得很好,当我在会话中存储一些对象时,__autoload 函数已经毫无问题地加载了相应的类。

不,我正在“更新”我的主脚本,并且想将 __autoload 函数更改为 spl_autoload_register 函数,因为 php 手册说,将来可能会弃用 __autoload。

但是现在,我有一些问题。spl_autoload_register 适用于所有类,我在脚本中以“正常”方式使用它们,但是当我将对象存储在会话中时,spl_autoload_register 无法加载这些类。

当我查看带有 json_encode($_SESSION) 的会话时,会出现如下内容:

    {"user":{"__PHP_Incomplete_Class_Name":"User","id":"1000","username":"foobar","email":"foo@bar.com"}}

使用 __autoload 没问题...

    {"user":{"id":"1000","username":"foobar","email":"foo@bar.com"}}

我的职能:

    __autoload($class) {
        包括“类/”。$类。'.php';
    }

我试图将其替换为:

    spl_autoload_register(函数($class) {
        包括“类/”。$类。'.php';
    }

我正在使用 PHP 版本 5.3.3-7

有人可以重现这个错误吗?到目前为止,这可能是 PHP spl_autoload_register 中的一个错误吗?到目前为止,__autoload 是“更好”的功能吗,而 spl_autoload_register 到目前为止还不能与会话一起使用吗?

4

0 回答 0