phpexcel有自己的自动加载函数,不过其他很多框架也有自己的自动加载函数,比如dedecms。。。
两者对于自动加载函数的实现有冲突。在这里就对phpexcel的自动加载函数做修改。
网上搜到
直接上网上找的代码,将phpexcel的Autoloader.php里面的register函数做修改。
/**
* Register the Autoloader with SPL
*/
public static function register(){
/*
if (function_exists('__autoload')) {
spl_autoload_register('__autoload');
}
// Register ourselves with SPL
if (version_compare(PHP_VERSION, '5.3.0') >= 0) {
return spl_autoload_register(array('PHPExcel_Autoloader', 'load'), true, true);
} else {
return spl_autoload_register(array('PHPExcel_Autoloader', 'load'));
}
*/
$functions = spl_autoload_functions();
foreach ( $functions as $function)
spl_autoload_unregister($function);
$functions = array_merge(array(array('PHPExcel_Autoloader','Load')),$functions);
foreach ( $functions as $function)
spl_autoload_register($function);
}
思路就是先获取原来已经注册的自动加载方法,然后清空,将phpexcel的自动加载方法组合进去,再注册一遍。
网上找的,能用就行了。网页上广告很多,就不贴了。
自己改下
public static function register(){
if (version_compare(PHP_VERSION, '5.3.0') >= 0) {
return spl_autoload_register(array('PHPExcel_Autoloader', 'load'), true, true);
} else {
return spl_autoload_register(array('PHPExcel_Autoloader', 'load'));
}
}
删掉原先代码的 spl_autoload_register('__autoload') 的操作即可。
总结
其实最重要的还是弄清楚php自动加载的机制。