注: zendservice-amazonに含まれているデモはそのままでは機能しません。リクエストには、アプリID、秘密鍵、および関連付けタグを含める必要があります。これは、デモスクリプトではデフォルトでは実行されません。これを理解するのに少し時間がかかりました。これらがないと、すべてのクエリでHTTP応答ステータスが400であるという例外がスローされます。残念ながら、例外には、欠落しているパラメータを示す応答本文がありません。
ZF2とを使い始めるためのコードを次に示しますZendService\Amazon
。
まず、この例のファイルを配置する場所のディレクトリ構造の概要を説明します。
testing
|-Zend
|---Crypt
|---Escaper
|---Http
|---I18n
|---Loader
|----+AutoloaderFactory.php
|----+... more files
|----+StandardAutoloader.php
|-----Exception
|---Stdlib
|---Uri
|---Validator
|-ZendRest
|-ZendService
|---Amazon
|-----Authentication
|-------Exception
|-----Ec2
|-------Exception
|-----Exception
|-----S3
|-------Exception
|-----SimpleDb
|-------Exception
|-----Sqs
|-------Exception
|----+AbstractAmazon.php
|----+...more files
|----+SimilarProduct.php
|-+test.php
testing
要点は、ZF2オートローダーとAmazonクラスおよびそれらの依存関係を配置する場所と呼ばれるディレクトリを作成したことです。テスト中はZend
、オートローダー(内Loader
)を含むZendService
フォルダーと、Amazon
サービスが移動するフォルダーです。
まず、ZF2からオートローダーのコピーを取得する必要があります。問題が発生した理由の1つは、ZF2と互換性のないZF1オートローダーを使用しているように見えるためです。ZF2からオートローダーを入手するには、最新のZF2パッケージをダウンロードLoader
して、ディレクトリをディレクトリに作成しZendFramework-2.0.x/library/Zend/
たZend
フォルダにコピーしますtesting
。
オートローダーファイルができたので、Amazonサービスファイルを入手しましょう。Composerを使用して最新のパッケージを取得する方法について詳細な回答を記述しますが、ここでは手動で取得する方法について説明します。利用可能なZF2パッケージの完全なリストを取得するには、http://packages.zendframework.com/packages.jsonでJSONファイルをロードします。 そのzendframework/zendservice-amazon
中で、リストから利用可能な最高のバージョンを特定し、対応するdistを取得します。編集2013年7月11日の時点で、これは最新のzendservice-amazonパッケージです。
のlibrary
ディレクトリから、ディレクトリZendService_Amazon-2.0.2.zip
全体をZendService
ディレクトリにコピーしtesting
ます。これで、ZF2Amazonサービスファイルができました。
次に、依存関係に注意してください。ZF2ライブラリから、ディレクトリ、、、、、、、、、をコピーし、内Crypt
のEscaper
ディレクトリHttp
にコピーします。I18n
Json
Stdlib
Uri
Validator
Zend
testing
ZendRestパッケージも必要になります。ZendRestパッケージからにZendRest
フォルダをコピーします。library
testing/ZendRest
さて、いくつかのコードについて。次の内容でフォルダtest.php
内に作成します。testing
<?php
require_once './Zend/Loader/StandardAutoloader.php';
$autoloader = new Zend\Loader\StandardAutoloader(array(
'namespaces' => array(
'Zend' => dirname(__FILE__) . '/Zend',
'ZendRest' => dirname(__FILE__) . '/ZendRest',
'ZendService' => dirname(__FILE__) . '/ZendService',
),
'fallback_autoloader' => true));
$autoloader->register();
$tag = 'prdesign-20'; // replace with your Amazon app ID
$appId = '1JT2V3QNEHDAMKYR5F02'; // replace w/ your access key from https://portal.aws.amazon.com/gp/aws/securityCredentials
$secretKey = 'Qgjeiw39f8UNzjJgeerrgDs1a193du/v7djDAtn/x';
$query = new ZendService\Amazon\Query($appId, 'US', $secretKey);
$query->Category('Books')->Keywords('PHP')->AssociateTag($tag);
$result = $query->search();
foreach($result as $item): ?>
<div class="item">
<a href="<?php echo $item->DetailPageURL ?>" target="_blank"><?php echo $item->Title ?></a>
by <?php if (is_array($item->Author)): ?>
<?php echo implode(', ', $item->Author) ?>
<?php else: ?>
<?php echo $item->Author ?>
<?php endif; ?>
</div>
<?php endforeach; ?>
まず、ZF2require_once
のクラスです。StandardAutoloader
オートローダーが登録されると、これは手動で含める必要がある唯一のクラスです。
次に、新しいオートローダーを作成し、いくつかのオプションを渡します。これは、名前空間内のクラスZend
とZendService
が配置されている場所をオートローダーに通知します。オートローダーに、現在のディレクトリのそれぞれのフォルダにあることを伝えます。dirname(__FILE__)
必要に応じて正しいパスに変更してください。このfallback_autoloader
オプションは、オートローダーに、内の任意の名前空間またはベンダーのクラスを検索するように指示しますinclude_path
。
次に、を呼び出す$autoloader->register();
と、PHP内に設定したオートローダーが実際に登録されます。これでオートローダーの設定は完了です。
次の3行は、APIに必要ないくつかのパラメーターを定義しています。
次の3行は簡単です。ここZendService\Amazon\Query
で、AmazonアプリIDと秘密鍵の新しいインスタンスを作成して渡します。次に、Booksで検索するように指定してクエリを作成し、をPHPにCategory
設定します。Keywords
また、必要なAssociateTagを追加します。最後に、検索を実行します。
私はまだ使用ZendService\Amazon
していないので、クラスの使用に関する詳細な手順を提供することはできませんが、含まれているデモスクリプトを使用すると、Amazonに基本的なクエリを送信して結果を処理することができます。
お役に立てば幸いです。