Добрый день, помогите разобраться почему в Битрикс не подключается сторонняя библиотека PHP
У нас Битрикс24 коробочная версия, мне необходимо добавить в проект дополнительную библиотеку PhpSpreadsheet
Я нашел статью где автор показывает как это сделать
https://tomgif.ru/1c/bitrix-php-library/
Смысл статьи - надо создать свой модуль и в папке lib разместить классы библиотеки.
На основе статьи я сделал по инструкции свой модуль в котором разместил классы библиотеки PhpSpreadsheet, модуль разместил в директории local/modules/ и затем установил его, модуль установился без ошибок
название модуля - PhpSpreadsheet (phpspreadsheet) он отображается в списке модулей как установленный
Теперь я пытаюсь в PHP консоли вызвать классы библиотеки и создать объект, но Битрикс выдает ошибку,
Class 'PhpOffice\PhpSpreadsheet\Spreadsheet' not found
Возможно я неправильно подключил библиотеку, не могу понять?
Код который я ввожу в консоли:
use Bitrix\Main\Loader;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
Loader::includeModule('phpspreadsheet'); // подключаю мой модуль
$spreadsheet = new Spreadsheet(); // создаю объект
$sheet = $spreadsheet->getActiveSheet();
файл install/index.php
<?
use Bitrix\Main\ModuleManager;
class PhpSpreadsheet extends CModule
{
public $MODULE_ID = 'phpspreadsheet';
public $MODULE_VERSION;
public $MODULE_VERSION_DATE;
public $MODULE_NAME;
public $MODULE_DESCRIPTION;
public function __construct()
{
$this->MODULE_ID = 'phpspreadsheet';
$this->MODULE_VERSION = '0.0.1';
$this->MODULE_VERSION_DATE = '2018-10-06 18:52:00';
$this->MODULE_NAME = 'PhpSpreadsheet';
$this->MODULE_DESCRIPTION = 'PhpSpreadsheet';
}
public function doInstall()
{
ModuleManager::registerModule($this->MODULE_ID);
}
public function doUninstall()
{
ModuleManager::unregisterModule($this->MODULE_ID);
}
}
файл include.php
/
use Bitrix\Main\Loader;
use Bitrix\Main\Application;
$application = Application::getInstance();
$modulePath = getLocalPath('modules/phpspreadsheet');
$libPath = $application->getDocumentRoot() . $modulePath . '/lib';
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($libPath)
);
$classes = [];
foreach ($iterator as $file) {
if ($file->isDir())
continue;
$pathName = $file->getPathname();
$basePath = str_replace($libPath, '', $pathName);
$name = str_replace('.php', '', $basePath);
$name = str_replace('/', '\\', $name);
$path = 'lib' . $basePath;
$classes[$name] = $path;
}
Loader::registerAutoLoadClasses('phpspreadsheet', $classes);
Библиотека
https://github.com/PHPOffice/PhpSpreadsheet/tree/m...
я разместил файлы библиотеки в директории модуля
папка модуля/lib/PhpSpreadsheet/
Может быть причина ошибки в структуре библиотеки м я апросто не правильно указываю пространство имен при обращении к классу библиотеки?