这个问题在2010年被问到。我看到了一个相关的问题,但2010年的推荐解决方案并没有解决它。
我使用的是PHPExcel v 1。8。0(2014年3月)
对原始回复提出的建议已合并,系统的其余部分仍然正常工作,例如我有一个init.php文件,该文件是为每个脚本引入的,其中包括以前帖子中建议的以下内容:
function myAutoload($Class)
{
require_once 'Classes/' . $Class . '.php';
}
spl_autoload_register('myAutoLoad')
所有{classes.php}文件都在文档根目录下的Classes /文件夹中,当然包括PHPExcel.php。 PHPExcel文件夹也包含在Classes /文件夹中。
我尝试了各种方法来启动PHPExcel,包括通常的
$spreadsheet = new PHPExcel;
作为替代方案,我也尝试定义一个Spreadsheet类
Class Spreadsheet extends PHPExcel {.... }
它们都产生与剪切和粘贴相同的错误
我已经成功地将应用程序中的其余进程从程序样式移植到面向对象的系统,并且花费了数周的时间。然而,PHPExcel的最后一个障碍让我感到厌烦!
任何建议都将不胜感激
答案 0 :(得分:2)
修改自动加载器,如果无法加载指定的文件,则返回false:
function myAutoload($Class)
{
if (file_exists('Classes/' . $Class . '.php')) {
require_once 'Classes/' . $Class . '.php';
return true;
}
return false;
}
这样,自动加载将通过您自己的自动加载器并执行"队列中的下一个自动加载器" (PHPExcel自动加载器)如果它没有通过您自己的自动加载器找到所请求的文件。如果您没有返回false
SPL自动加载器处理程序,则无法通过任何其他"排队"自动加载机