2011-01-17 2 views
2

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

Предупреждение: 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') 

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

Спасибо!

ответ

3

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

$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' 
+0

Невозможно изменить имя Lib, это внешнее, установленный через диспетчера пакетов, и я хочу использовать общее решение. – frinux

+0

Ваше решение require_once хорошее, я держу это. Благодаря! – frinux

+0

см. Этот ответ: http://stackoverflow.com/questions/6417394/how-to-add-a-3rd-party-library-to-magento#answer-22899482 – Mohamed23gharbi

1

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

+0

Это изящное решение, но слишком много тяжелый! Я не хочу создавать пользовательский автозагрузчик для такой небольшой функциональности. Конечная цель - предложить архив, если PclZip установлен, но я могу пропустить шаг ths. Поэтому я не буду создавать пользовательский автозагрузчик только для этого. Спасибо, в любом случае ;) – frinux

Смежные вопросы