ライブラリはmagentoと統合する必要はありません。ほとんどの場合、APIと通信するラッパーです。
このライブラリを使用して、コントローラーまたはモデル内からこれらのAPI呼び出しを実行できるようにしたいと思います。
ライブラリはどこに置くことができますか?それらをオートローダーに追加するにはどうすればよいですか?
Webサイトのルートディレクトリにある/ libフォルダを調べます。 From Magento Base Directories :
Magentoのライブラリフォルダは、モジュールベースではないMagentoコードが存在する場所です。これには、Magentoの実行を可能にする大量のシステムコードと、多数のサードパーティライブラリ(Zend Frameworkを含む)が含まれます。ライブラリは、ファイルを自動ロードしようとしたときにMagentoが検索する最後のコードプールでもあります。
つまり、ライブラリがzendファイルの命名規則をサポートしている場合、ライブラリクラスはmagentoオートローダーによって検出およびロードされます。それ以外の場合は、Mage :: getBaseDir( ‘lib’)を使用して/ 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プールにあるべきです!このソリューションは@JeroenVermeulenによって提供されており、彼に感謝します:)