spl_autoload、名前空間、および動的クラス名を試しているときに、「奇妙な」ことに遭遇しました。私はPHP 5.3.2を使用し、このようにオートロードを呼び出します
set_include_path(get_include_path().PATH_SEPARATOR."classes".PATH_SEPARATOR."utils");
spl_autoload_extensions(".class.php");
spl_autoload_register();
今、核心に。次のコードを提案します。
new \User\Student;
$name="\User\Student";
new $name();
これは問題なく動作し、ファイル classes/user/student.class.php が正常にロードされ、両方の構成が成功します。ただし、使用方法が少し異なります。
$name="\User\Student";
new $name();
new \User\Student;
「..Class \User\Student could not be loaded...」で失敗します。何らかの形で静的/動的名前空間の解決に関連する必要があることをお勧めします。ただし、これら2つが処理される時間(コンパイルと実行時)を除いて、これら2つに違いはないと思います。
説明をありがとう。