[英]spl_autoload Class not found following namespaces directory structure
我正在尝试在项目中使用类自动加载。 这是我写的:
在main.php上:
namespace myproject;
spl_autoload_extensions(".php");
spl_autoload_register();
subspace\myclass::mystaticmethod();
在subspace / myclass.php上:
namespace myproject\subspace;
class myclass {
static function mystaticmethod() {
....
}
}
我收到此错误:
PHP Fatal error: Class 'myproject\\subspace\\myclass' not found
到目前为止,我只在文档中发现了区分大小写的名称的问题,因此我只切换为小写字母,但遇到了同样的错误。 为什么?
[编辑]使用PHP 5.3.3
我发现了问题:默认的include目录将是完整的namespace/subspace
路径。
我也找到了一个很好的解决方案。 来自http://www.php.net/manual/zh/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快一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.