2011-01-17 13 views
2

MagentoモジュールでPclZipライブラリを使用したいと思います。私はパッケージマネージャ(libphp-pclzip)を使ってインストールしましたが、モジュールで直接使用することはできません。Magentoオートローダはクラスを取得しようとします。外部のlibの使い方は? (PclZip)

警告:include(PclZip.php):私は/home/frleq/Dev/projets/Compario/magento-community-1.4.2.0/lib/Varien/Autoload.phpでそのようなファイルやディレクトリを行に93

#0 /home/frleq/Dev/projets/Compario/magento-community-1.4.2.0/lib/Varien/Autoload.php(93): mageCoreErrorHandler(2, 'include(PclZip....', '/home/frleq/Dev...', 93, Array) 
#1 /home/frleq/Dev/projets/Compario/magento-community-1.4.2.0/lib/Varien/Autoload.php(93): Varien_Autoload::autoload() 
#2 [internal function]: Varien_Autoload->autoload('PclZip') 
#3 [internal function]: spl_autoload_call('PclZip') 
#4 /home/frleq/Dev/projets/Compario/magento-community-1.4.2.0/app/code/community/Compario/Connector/Helper/Data.php(8): class_exists('PclZip') 

どのようにすることができます:ストリームをオープンに失敗しません自動ロードを無効にするか、自分のlibを見つけるように管理しますか?

ありがとうございます!

$includePath = 'path/to/lib'; 
set_include_path(get_include_path() . PS . $includePath); 

もう一つの迅速な解決策:

require_once 'path/to/lib/PclZip.php'; 

しかし、よりよい解決策があることをあなたのlibの名前を変更することです

答えて

3

迅速な解決にはパスを含めるために、あなたのライブラリとディレクトリを追加することですオートローダに表示されます。 libディレクトリの中になければなりません。クラスの名前は、大文字で始まり "_"で区切られた単語で構成されていなければなりません。これらの単語は、ファイルのディレクトリ構造とクラスと一致する必要があります。たとえば :。

'path/to/lib/PclZip.php' => Path_To_Lib_PclZip' 
+0

、それは、外部にありますパッケージマネージャーからインストールされ、私は一般的な解決策が必要です。 – frinux

+0

あなたのソリューションrequire_onceは良いです、私はこれを保持します。ありがとう! – frinux

+0

この回答を見る http://stackoverflow.com/questions/6417394/how-to-add-a-3rd-party-library-to-magento#answer-22899482 – Mohamed23gharbi

1

が組み込まと競合しないMagentoののカスタムオートローダを設定するにはいくつかのアイデアのためのthis answerを参照してくださいLIBの名前を変更することは不可能

+0

これは洗練されたソリューションですが、ヘビー!私はこのような小さな機能性のためにカスタムオートローダーを作成したくありません。最終的な目的は、PclZipがインストールされている場合にアーカイブを提案することですが、私はそのステップをスキップできます。だから私はこのためにカスタムオートローダーを作成しません。とにかくありがとう ;) – frinux

関連する問題