我有点困惑。
到目前为止,我在 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 到目前为止还不能与会话一起使用吗?