Intereting Posts

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

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

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

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

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

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

Другими словами, если ваша библиотека поддерживает соглашение об именах файлов zend, классы библиотеки будут найдены и загружены автозагрузчиком magento. В противном случае вы можете получить путь к каталогу / lib с помощью Mage :: getBaseDir ('lib') и написать что-то вроде

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

В качестве решения, которое отлично работает: вы можете расширить 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, и я благодарю его 🙂