私は少し混乱しています。
これまで PHP で __autoload を使用していましたが、セッションも使用しています。これら 2 つのことは一緒にうまく機能し、いくつかのオブジェクトをセッションに格納していたときに、__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($クラス) { 'classes/' を含めます。$クラス。'.php'; }
そして私はそれを次のものに置き換えようとしました:
spl_autoload_register(function($class) { 'classes/' を含めます。$クラス。'.php'; }
PHP バージョン 5.3.3-7 を使用しています
誰かがこのエラーを再現できますか? これはおそらく PHP の spl_autoload_register のバグでしょうか? これまでのところ __autoload は使用する「より良い」関数であり、spl_autoload_register はこれまでのところセッションで動作できませんか?