我正在尝试在我的项目中使用类自动加载。这就是我写的:
在main.php上:
namespace myproject;
spl_autoload_extensions(".php");
spl_autoload_register();
subspace\myclass::mystaticmethod();
on subspace / myclass.php:
namespace myproject\subspace;
class myclass {
static function mystaticmethod() {
....
}
}
我收到此错误:
PHP Fatal error: Class 'myproject\\subspace\\myclass' not found
到目前为止,我只是在文档中发现了区分大小写的名称的问题,所以我只切换到小写,但是我得到了同样的错误。为什么呢?
[编辑] 使用PHP 5.3.3
答案 0 :(得分:1)
我发现了问题:默认包含目录将是完整的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快一点。