【问题标题】:how to add a 3rd party library to magento?如何将第 3 方库添加到 magento?
【发布时间】:2011-06-20 20:55:52
【问题描述】:

该库不需要与 magento 集成,它主要是一个与 API 通信的包装器。

我希望能够使用这个库并在控制器或模型中进行这些 API 调用。

我可以把图书馆放在哪里?如何将它们添加到自动加载器?

【问题讨论】:

    标签: php magento zend-framework magento-1.7 zend-autoloader


    【解决方案1】:

    查看您网站根目录中的 /lib 文件夹。来自Magento Base Directories

    Magento 的库文件夹在哪里 基于非模块的 Magento 代码存在。 这包括大量的 允许 Magento 的系统代码 运行,以及一些第三 聚会图书馆(包括 Zend 框架)。图书馆也是 Magento 将搜索的最后一个代码池 尝试自动加载文件时。

    因此,换句话说,如果您的库支持 zend 文件命名约定 - 库类将由 magento 自动加载器找到并加载。否则,您可以使用 Mage::getBaseDir('lib') 获取 /lib 目录的路径并编写类似

    的内容
    require_once(Mage::getBaseDir('lib') . '/EZComponents/Base/src/base.php');
    

    【讨论】:

    【解决方案2】:

    作为完美运行的解决方案: 您可以扩展 varien_event_observer,创建自己的自动加载器函数,并使用 controller_front_init_before 事件将此自动加载器推送到 __autoload 堆栈的前面。 这个集成日光浴室和交响乐事件调度器的例子可以解释它:

    class JeroenVermeulen_Solarium_Model_Observer_Autoloader extends Varien_Event_Observer {
    
        /**
         * This an observer function for the event 'controller_front_init_before'.
         * It prepends our autoloader, so we can load the extra libraries.
         *
         * @param Varien_Event_Observer $event
         */
        public function controllerFrontInitBefore( $event ) {
            spl_autoload_register( array($this, 'load'), true, true );
        }
    
        /**
         * This function can autoloads classes starting with:
         * - Solarium
         * - Symfony\Component\EventDispatcher
         *
         * @param string $class
         */
        public static function load( $class )
        {
            if ( preg_match( '#^(Solarium|Symfony\\\\Component\\\\EventDispatcher)\b#', $class ) ) {
                $phpFile = Mage::getBaseDir('lib') . '/' . str_replace( '\\', '/', $class ) . '.php';
                require_once( $phpFile );
            }
        }
    
    }
    

    当然你的库应该在库池中! 此解决方案由@Jeroen Vermeulen 提供,我感谢他:)

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-18
    • 2015-11-13
    • 1970-01-01
    • 1970-01-01
    • 2019-10-31
    • 2020-09-14
    • 1970-01-01
    • 2021-08-04
    相关资源
    最近更新 更多