Как использовать внешнюю библиотеку?(PclZip) - PullRequest
2 голосов
/ 17 января 2011

Я бы хотел использовать библиотеку PclZip в модуле Magento.Я установил его через менеджер пакетов (libphp-pclzip), но я не могу использовать его непосредственно в моем модуле, автозагрузчик Magento пытается получить класс и завершается ошибкой:

Предупреждение: include (PclZip.php): не удалось открыть поток: нет такого файла или каталога в /home/frleq/Dev/projets/Compario/magento-community-1.4.2.0/lib/Varien/Autoload.php в строке 93

#0 /home/frleq/Dev/projets/Compario/magento-community-1.4.2.0/lib/Varien/Autoload.php(93): mageCoreErrorHandler(2, 'include(PclZip....', '/home/frleq/Dev...', 93, Array)
#1 /home/frleq/Dev/projets/Compario/magento-community-1.4.2.0/lib/Varien/Autoload.php(93): Varien_Autoload::autoload()
#2 [internal function]: Varien_Autoload->autoload('PclZip')
#3 [internal function]: spl_autoload_call('PclZip')
#4 /home/frleq/Dev/projets/Compario/magento-community-1.4.2.0/app/code/community/Compario/Connector/Helper/Data.php(8): class_exists('PclZip')

Как мне отключить автозагрузку или заставить ее найти мою библиотеку?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 17 января 2011

Быстрое решение состоит в том, чтобы добавить каталог с вашей библиотекой, чтобы включить путь:

$includePath = 'path/to/lib';
set_include_path(get_include_path() . PS . $includePath);

Еще одно быстрое решение:

require_once  'path/to/lib/PclZip.php';

Но лучшее решение - изменить имя вашей библиотеки, чтобы она была видна автозагрузчику. Он должен находиться внутри директории lib, имя класса должно состоять из слов, которые начинаются с заглавной буквы и разделяются «_» Эти слова должны соответствовать структуре каталогов файла с классом. Например:

'path/to/lib/PclZip.php' => Path_To_Lib_PclZip'
1 голос
/ 17 января 2011

См. этот ответ , где приведены некоторые идеи по настройке собственного автозагрузчика в Magento, который не будет конфликтовать со встроенным.

...