在自定义Magento模块中使用PEAR库会产生“需要打开失败...”错误

时间:2011-06-20 13:02:03

标签: php zend-framework magento pear autoloader

我编写了一个Magento模块来监听“OrderSave”事件并对第三方应用程序执行一些API调用。大多数功能都很好,但我需要处理来自API的XML响应,当我尝试使用PEAR XML_Unserializer类时,我收到以下错误:

  

致命错误:require_once()[function.require]:无法打开所需的'XML / Parser.php'(include_path ='/ Users / jeremymoore / Sites / Helm / html / app / code / local:/ Users / jeremymoore /Sites/Helm/html/app/code/community:/Users/jeremymoore/Sites/Helm/html/app/code/core:/Users/jeremymoore/Sites/Helm/html/lib:.:/Applications/MAMP/ bin / php5 / lib / php:/ usr / loca / zend // share / ZendFramework / library')在/Users/jeremymoore/Sites/Helm/html/lib/PEAR/XML/Unserializer.php第58行

我的模块在模型中有一个Observer.php文件,其内容如下所示:

<?php
require_once 'lib/PEAR/XML/Serializer.php';
require_once 'lib/PEAR/XML/Unserializer.php';
require_once 'lib/Pest/PestXML.php';
Zend_Loader::registerAutoload();

class Helm_Litmos_Model_Observer
{
    public function hookToOrderSaveEvent()
    {
        //Do API Stuff Here
    }
}

hookToOrderSaveEvent功能会创建序列化程序和反序列化程序类的新实例。在我添加Unserializer代码之前,我已经完成了序列化对象和进行API调用的所有工作。当XML_Unserializer类试图引用Parser.php时,事情似乎就会崩溃。

我不确定我在这里使用的“require_once”方法是否适合我包含这些库。我正在使用Magento 1.4.1.1,它目前正在运行MAMP的本地机器上使用。

有关更好的自动加载方法的建议或包含这些库在我的模块中使用的建议,或者只是关于如何修复我的内容的想法将不胜感激。

由于

1 个答案:

答案 0 :(得分:1)

您可以尝试使用Mage::getBaseDir('lib')

require_once Mage::getBaseDir('lib').'/PEAR/XML/Serializer.php';

Alan在Magento的基本目录上有一篇很好的文章:

http://alanstorm.com/magento_base_directories