phpexcel的自动加载与其他框架有冲突


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自动加载的机制。


php skill


上一篇:PHP控制前端部分标签选中状态

YPHP后台中RBAC实现整理(节点篇):下一篇