1

私は少し混乱しています。

これまで 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 はこれまでのところセッションで動作できませんか?

4

0 に答える 0