我在NetBeans中设置了一个包含单元测试文件的项目。我将bootstrap设置为C:\www\foo\_tests\TestAutoload.php
并将简单的自动加载方法放到此文件中:
function __autoload( $class_name ) {
// series of ifs
if ( ... ) {
$file_name = ...
}
if ( file_exists ( $file_name ) ) {
require_once( $file_name );
} else {
echo "autoload error";
}
}
我的所有测试都以这种方式自动加载失败。它们总是只输出“自动加载错误”。如果我不检查file_exists
是否只使用require_once( $file )
,无论$file
中的内容是什么,它都能完美运行。
之前有人遇到过这样的事吗?这不是我无法解决的问题,只是不检查文件是否存在,但我很感兴趣为什么会这样做,如果我能以某种方式欺骗它。
答案 0 :(得分:4)
来自PHP Manual page for file_exists
:
请注意:如果您传递一个相对路径到file_exists,它将返回false,除非该路径恰好相对于“当前PHP目录”(请参阅chdir())。
答案 1 :(得分:2)
您可能想尝试在绝对文件名上使用 file_exists(),如果它们不是,例如file_exists($file_name)
可能是file_exists(dirname(__FILE__) . '/../myclasses/' . $file_name)
,因为(根据amphetamachine的回答), file_exists() 不使用PHP的include_path设置。
答案 2 :(得分:1)
在file_exits函数中给出绝对路径,它可能在file_exits函数中的文件路径不正确你有什么worte