【问题标题】:Undefined class for parsing XLS file用于解析 XLS 文件的未定义类
【发布时间】:2023-03-12 16:10:01
【问题描述】:

我需要我通过 composer 安装的 SimpleXLS 包类,但是当我尝试对其进行测试时,我的 SimpleXLSX 看起来没有定义。

<?php

include './_inc/bootstrap.php';
require_once('./vendor/shuchkin/simplexls/src/SimpleXLS.php');
if ( $xlsx = SimpleXLSX::parse('book.xlsx') ) {
    print_r( $xlsx->rows() );
} else {
    echo SimpleXLSX::parseError();
}

【问题讨论】:

  • 你试过composer dump-autoload吗?
  • 是的,问题仍然存在! “未定义的 cass”@Script47
  • var_dump(file_exists('./vendor/shuchkin/simplexls/src/SimpleXLS.php')) 显示什么?
  • 它返回 bool(true)。 @Script47

标签: php class xls


【解决方案1】:

改变,

if ( $xlsx = SimpleXLSX::parse('book.xlsx') ) {

到,

if ( $xlsx = SimpleXLS::parse('book.xlsx') ) {

SimpleXLSX 的所有引用更改为SimpleXLS,因为根据this,该类被称为SimpleXLS,而不是SimpleXLSX

注意:如果您包含其自动加载器,Composer 将处理自动加载。

【讨论】:

  • 这就是问题所在。非常感谢!
【解决方案2】:

使用 Composer 时,通常不应在包中包含特定文件,而应仅包含 Composer 生成的自动加载器:

require_once './vendor/autoload.php';

这只需要运行一次,所以可以在你现有的_inc/bootstrap.php文件中,你需要向上一个目录,所以行将是:

require_once '../vendor/autoload.php';

(注意require_once是关键字,不是函数,所以不需要括号,复杂情况下添加可能会造成混淆。)

正如 Script47 在单独的答案中指出的那样,您似乎也混淆了两个名称相似的包:

  • shuchkin/simplexls 定义了一个类 SimpleXLS 用于读取旧格式 .xls 二进制文件
  • shuchkin/simplexlsx 定义了一个类 SimpleXLSX 用于读取更新的 .xlsx 压缩 XML 文件

【讨论】:

    猜你喜欢
    • 2018-05-29
    • 1970-01-01
    • 1970-01-01
    • 2019-04-15
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多