如何使用外部lib? (PclZip)

时间:2011-01-17 16:36:17

标签: magento module autoload

我想在Magento模块中使用PclZip lib。我通过我的包管理器(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')

如何设法禁用自动加载或让它找到我的lib?

谢谢!

2 个答案:

答案 0 :(得分:3)

快速解决方案是在库中添加目录以包含路径:

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

一个更快的解决方案:

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

但更好的解决方案是将lib的名称更改为自动加载器可见。它应该在lib目录中,类的名称应该包含以大写字母开头并以“_”分隔的单词。这些单词应该与文件的目录结构和类匹配。 例如:

'path/to/lib/PclZip.php' => Path_To_Lib_PclZip'

答案 1 :(得分:1)

有关在Magento中设置自定义自动加载器的一些建议,请参阅this answer,该建议不会与内置版本冲突。