我遇到了最棘手的问题。我有一个__autoload
函数来处理我的所有类,包括。在我的代码中的某一点,即new XLSReader()
和new CVSReader()
之间,__autoload
函数停止使用。因此我收到class CSVReader not found
错误。这是__autoload
停止工作的代码
// Get general data
printf("Fetching data from \"%s\"... ", $data_file);
$csvreader = new \XLSReader($data_file, $columnsToFetch);
$data = $csvreader->getData();
print("Done.\n");
// Get IP data
print("Loading IP addresses... ");
$csvreader = new \CSVReader($ip_file, null);
$ip_data = $csvreader->getData();
print("Done.\n");
我知道__autoload
函数已停止工作,因为我手动包含了CSVReader
类,并且在下一个本应自动加载的类中出现not found
错误。
为了说清楚,在上面的代码片段之前,自动加载就像它应该的那样工作。此外,这是__autoload
函数
// Autoload
function __autoload($classname)
{
$classname = str_replace("\\", "/", $classname);
$path = "code/" . $classname . ".php";
if(is_file($path))
{
include($path);
return true;
}
else
{
return false;
}
}
有什么想法吗?
答案 0 :(得分:3)
你可能会遇到使用__autoload()
代替spl_autoload_register()
的阴暗水域吗?
http://php.net/manual/en/function.spl-autoload-register.php
它可能也是一个案例问题,或者您在自动加载功能中使用的非绝对文件路径。
如果是后者,请使用__DIR__
(或dirname(__FILE__)
)或您设置中需要的任何内容添加$ path:
$path = __DIR__ . $path;