如何设置PHPExcel的IOFactory.php的路径

时间:2014-02-13 20:15:54

标签: php phpexcel

以下是我的localhost目录结构 -
htdocs目录\ SOFTWARE \ office_admin \ exam_excel \类\ PHPExcel.php
htdocs目录\ SOFTWARE \ office_admin \ exam_excel \类\ PHPExcel \ IOFactory.php
htdocs目录\ SOFTWARE \ office_admin \包括\类\ myownclassfiles.php
htdocs中\ SOFTWARE \ office_admin \包括\ example.inc.php

当我使用

在example.inc.php中使用IOFactory.php时
require_once 'Classes/PHPExcel.php';<br>
require_once 'Classes/PHPExcel/IOFactory.php';

我收到的警告清单是2-3个样本 -

  

警告:   include_once(包括/类/ class.PHPExcel_Shared_String.php):   无法打开流:没有这样的文件或目录   C:\ xampp \ htdocs \ manazeschool \ software \ office_admin \ index.php在线   26

     

警告:include_once():打开失败   'includes / classes / class.PHPExcel_Shared_String.php'包含在内   (include_path ='。; C:\ xampp \ php \ PEAR')in   C:\ xampp \ htdocs \ manazeschool \ software \ office_admin \ index.php在线   26

     

警告:   include_once(包括/类/ class.PHPExcel_Reader_Excel2007.php):   无法打开流:没有这样的文件或目录   C:\ xampp \ htdocs \ manazeschool \ software \ office_admin \ index.php在线   26

     

警告:include_once():打开失败   'includes / classes / class.PHPExcel_Reader_Excel2007.php'包含在内   (include_path ='。; C:\ xampp \ php \ PEAR')in   C:\ xampp \ htdocs \ manazeschool \ software \ office_admin \ index.php在线   26

我自己的自定义类路径设置 -

if (!defined("INCLUDES_CLASS_PATH")) {
    define("INCLUDES_CLASS_PATH", "includes/classes");
}

$path_arr = explode('/', $_SERVER['PHP_SELF']);
$cur_foldpath =  count($path_arr)-3;
//This variable is for avoiding the unautherized page access 

if (!defined('FROMINDEX')) {    
   define('FROMINDEX', true);
}
if (!defined('DS')) {
   define('DS', '/');
}   
include_once('includes/config.inc.php');
   //class
   function __autoload($class_name) {
    include_once INCLUDES_CLASS_PATH . DS . "class." . $class_name . '.php';
   }    
   include (INCLUDES_CLASS_PATH . DS .'developer.mysql.class.php');
   include (INCLUDES_CLASS_PATH . DS . 'validation.class.php');
   include (INCLUDES_CLASS_PATH . DS . 'html_form.class.php');
   //files
   include (INCLUDES_PATH . DS .'messages.inc.php');
   include (INCLUDES_PATH . DS . 'functions.inc.php');
.....
}

我如何克服这些警告

1 个答案:

答案 0 :(得分:0)

PHPExcel提供自己的SPL兼容自动加载器;使用spl_autoload_register()注册您自己的自动加载器,两者应该协同工作 - 有关详细信息,请参阅开发人员文档中标题为“Lazy Loader”的第3.2节

修改

如果您修改自己的自动加载器以在包含它之前测试是否存在类文件(使用file_exists())并且如果它不存在则返回false(如果它存在则仅返回包含它),那么它应该工作< / p>

function myAutoload($class_name) { 
    if (!file_exists(INCLUDES_CLASS_PATH . DS . "class." . $class_name . '.php')) { 
        return false; 
    } 
    include_once INCLUDES_CLASS_PATH . DS . "class." . $class_name . '.php'; 
} 

 spl_autoload_register('myAutoload');

然后确保您的Classes/PHPExcel/IOFactory.php的include正在查找正确的目录以实际查找该文件。 PHPExcel IOFactory将使用SPL注册PHPExcel自动加载器。

当一个类被请求自动加载时,SPL应首先使用自动加载器处理检查,这将为PHPExcel类(以及任何其他无法找到的类)返回false;那么SPL应该调用PHPExcel自动加载器,它将加载任何PHPExcel类。