Неопределенный класс для разбора файла XLS - PullRequest
1 голос
/ 27 марта 2019

Мне потребовался мой пакетный класс SimpleXLS, который я установил через composer, но когда я пытаюсь проверить его, мой 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();
}

Ответы [ 2 ]

1 голос
/ 27 марта 2019

При использовании 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
1 голос
/ 27 марта 2019

Изменить,

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

К,

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

Изменить любые ссылки от SimpleXLSX на SimpleXLS, потому что согласно это , классназывается SimpleXLS, а не SimpleXLSX.

Примечание: Composer будет обрабатывать автозагрузку, если вы включите его автозагрузчик.

...