Подтвердить что ты не робот

Как добавить стороннюю библиотеку в magento?

Библиотеке не нужно интегрироваться с magento, это в основном оболочка, которая взаимодействует с API.

Я хотел бы иметь возможность использовать эту библиотеку и вызывать эти вызовы API внутри контроллера или модели.

Где я могу поместить библиотеку? Как добавить их в автозагрузчик?

4b9b3361

Ответ 1

Посмотрите в папку /lib в корневом каталоге вашего сайта. Из Базовые справочники Magento:

В папке библиотеки Magentos есть немодульный код Magento. Это включает большое количество системный код, который позволяет Magento а также ряд третьих партийных библиотек (включая Zend Фреймворк). Библиотека также является последний пул кода Magento будет искать при попытке автозагрузки файла.

Таким образом, если ваша библиотека поддерживает соглашение об именах файлов zend, классы библиотеки будут найдены и загружены автозагрузчиком magento. В противном случае вы можете получить путь к каталогу /lib с помощью Mage:: getBaseDir ('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 );
        }
    }

}

и, безусловно, ваши библиотеки будут в пуле lib!  это решение предоставляется @Jeroen Vermeulen, и я благодарю его:)