我想在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?
谢谢!
答案 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,该建议不会与内置版本冲突。