在尝试使用 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 无法加载...”上失败。我建议它应该以某种方式与静态/动态命名空间解析有关。但是,我认为这两者之间应该没有任何区别,除了它们的处理时间(编译与运行时)。
感谢您的任何解释。