我试图在我的项目中使用类自动加载。这是我写的:
在main.php:
namespace myproject;
spl_autoload_extensions(".php");
spl_autoload_register();
subspace'myclass::mystaticmethod();
在子空间/myclass.php: namespace myproject'subspace;
class myclass {
static function mystaticmethod() {
....
}
}
我得到这个错误:
PHP Fatal error: Class 'myproject''subspace''myclass' not found
到目前为止,我只在文档中发现了大小写敏感名称的问题,所以我只切换到小写,但我得到了相同的错误。为什么?[EDIT] Using PHP 5.3.3
我发现了问题:默认包含目录将是完整的namespace/subspace
路径。
我也找到了一个好的解决方案。从http://www.php.net/manual/en/function.spl-autoload.php # 92767:
<?php
// Add your class dir to include path
set_include_path(get_include_path().PATH_SEPARATOR.'..');
// Make autoloader look for commonly used "myclass.php" type filenames
spl_autoload_extensions('.php');
// Use default autoload implementation
spl_autoload_register();
?>
默认的自动加载实现是用C编写的,并且总是比PHP快一些。