15.3. Zend_Service_Amazon
上一页 | 第 15 章 Zend_Service | 下一页

## 15.3. Zend_Service_Amazon

### 15.3.1. Introduction

`Zend_Service_Amazon` 是一个简单的用来操作Amazon web services的API. `Zend_Service_Amazon` 含两组不同的API,　一组是传统的遵循 Amazon's自身标准的API； 另一个是一组相对简单的API,通过它我们可以非常容易的构建哪怕是很复杂的搜索请求。

`Zend_Service_Amazon` 允许开发者通过Amazon的Web Services的API来直接得到Amazon.com网站中的信息 ． 例子包括：

- 保存出版物的信息, 如 图片, 描述, 价格,　等
- 顾客和编辑的评
- 类似的产品或附属产品
- Amazon.com 报价
- ListMania 列表

为了使用 `Zend_Service_Amazon`, 你应当已经拥有了Amazon开发者API key , 如果你要了解更多信息，请访问 Amazon Web Services .

| 注意
你的Amazon开发者API key是和你的Amazon Id相联系的， 所以请小心使用，不要随便泄漏啦 .

例 15.2. 用传统的API搜索Amazon

在这个例子中, 我们在Amazon中搜索PHP图书，然后遍历结果并打印出它们.

    <?php
    require_once 'Zend/Service/Amazon.php';
    $amazon = new Zend_Service_Amazon('AMAZON_API_KEY&');
    $response = $amazon->itemSearch(array('SearchIndex' => 'Books', 'Keywords' => 'php'));
    foreach ($response as $r) {
        echo $r->Title .'<br />';
    }
    ?>

例 15.3. 使用Query API搜索来Amazon

这里, 我们同样在Amazon中搜索PHP图书, 但是我们将使用Query API来代替上面的方式, 类似 Fluent Interface 设计模式.

    <?php
    require_once 'Zend/Service/Amazon/Query.php';
    $query = new Zend_Service_Amazon_Query('AMAZON_API_KEY');
    $query->category('Books')->Keywords('PHP');
    $results = $query->search();
    foreach ($results as $result) {
        echo $result->Title .'<br />';
    }
    ?>

### 15.3.2. 国家代码

默认情况下, `Zend_Service_Amazon` 会选择连接到 Amazon 美国("US") 的web service. 如果你希望它连接到其他的国家, 可以简单的指定一个适当的国家代码作为构造函数的第二的参数来实现:

例 15.4. 选择一个 Amazon Web Service 国家

    <?php
    // Connect to Amazon in Japan
    require_once 'Zend/Service/Amazon.php';
    $amazon = new Zend_Service_Amazon('AMAZON_API_KEY', 'JP');
    ?>

| 注意
有效的国家代码: `CA`, `DE`, `FR`, `JP`, `UK`, 和 `US`.

### 15.3.3. 用ASIN来搜索指定的Amazon出版物

如果你知道一个出版物的ASIN,你可以通过`itemLookup()` 方法来获得这个出版物.

例 15.5. 用ASIN来搜索指定的Amazon出版物

    <?php
    require_once 'Zend/Service/Amazon.php';
    $amazon = new Zend_Service_Amazon('AMAZON_API_KEY');
    $item = $amazon->itemLookup('B0000A432X');
    ?>

`itemLookup()` 方法还可以接受第二个参数（可选）来传递搜索选项 . 更多细节, 包括现有的选项列表, 请参考 relevant Amazon documentation.

### 15.3.4. 对Amazon出版物的搜索

基于现有的各种条件来查询一个出版物可以简单的通过 `itemSearch()` 方法来实现．如下面的例子:

例 15.6. 对Amazon出版物的搜索

    <?php
    require_once 'Zend/Service/Amazon.php';
    $amazon = new Zend_Service_Amazon('AMAZON_API_KEY');
    $response = $amazon->itemSearch(array('SearchIndex' => 'Books', 'Keywords' => 'php'));
    foreach($response as $r) {
        echo $r->Title .'<br />';
    }
    ?>

The `itemSearch()` 方法接受一个数组作为参数来处理搜索请求.　更多细节, 包括现有的选项列表, 请参考 relevant Amazon documentation

| 提示
The `Zend_Service_Amazon_Query` 类是对这个方法的简单包装.

### 15.3.5. 另一个可选的查询 API

#### 15.3.5.1. 简介

`Zend_Service_Amazon_Query` 为Amazon Web Service 提供另一个可选的查询 API. 这个API 使用Fluent Interface 模式. 就是说, 你可以使用一个方法链表来实现所有的调用. (e.g., `$obj->method()->method2($arg)`)

`Zend_Service_Amazon_Query` 用过载来简单的构建一个出版物查询，然后允许你基于指定的标准进行搜索. 用方法调用来提供每一个查询参数, 每个方法的参数对应那个查询参数的值：

例 15.7. Search Amazon Using the Alternative Query API

在这个例子中, 使用新的查询 API 作为fluent interface来指定查询参数和值:

    <?php
    require_once 'Zend/Service/Amazon/Query.php';
    $query = new Zend_Service_Amazon_Query('MY_API_KEY');
    $query->Category('Books')->Keywords('PHP');
    $results = $query->search();
    foreach ($results as $result) {
        echo $result->Title .'<br />';
    }
    ?>

它设定查询参数`Category` 为 "Books" ， `Keywords` 为 "PHP".

关于查询参数的更多信息, 请参考 relevant Amazon documentation.

### 15.3.6. Zend_Service_Amazon 类

下面的类都是由 `Zend_Service_Amazon::itemLookup()` 和 `Zend_Service_Amazon::itemSearch()`这两个方法返回的:

- `Zend_Service_Amazon_Item`

- `Zend_Service_Amazon_Image`

- `Zend_Service_Amazon_ResultSet`

- `Zend_Service_Amazon_OfferSet`

- `Zend_Service_Amazon_Offer`

- `Zend_Service_Amazon_SimilarProduct`

- `Zend_Service_Amazon_Accessories`

- `Zend_Service_Amazon_CustomerReview`

- `Zend_Service_Amazon_EditorialReview`

- `Zend_Service_Amazon_ListMania`

#### 15.3.6.1. Zend_Service_Amazon_Item

`Zend_Service_Amazon_Item` 一个用来代表由Amazon web service返回的出版物的类. 它包含了出版物的所有属性, 包括 标题, 描述, 评论, 等.

##### 15.3.6.1.1. Zend_Service_Amazon_Item::asXML()

`string asXML();`

返回出版物原始请求的xml字符串

##### 15.3.6.1.2. 属性

`Zend_Service_Amazon_Item` 有一组直接与 Amazon标准的API 对应的属性.

表 15.1. Zend_Service_Amazon_Item 属性

名称 | 类型 | 描述
--- | --- | ---
ASIN | string | Amazon 出版物 ID
DetailPageURL | string | 到相关细节页面url
SalesRank | string | 出版物的销售等级
SmallImage | Zend_Service_Amazon_Image | 出版物的小图片
MediumImage | Zend_Service_Amazon_Image | 出版物的中等大小图片
LargeImage | Zend_Service_Amazon_Image | 出版物的大图片
Subjects | array | 出版物的主题
Offers | `Zend_Service_Amazon_OfferSet` | 提供出版物的小图片的简介和报价
CustomerReviews | array | 代表出版物的编辑评论的一组 `Zend_Service_Amazon_CustomerReview` 对象构成的数组
EditorialReviews | array | 代表出版物的编辑评论的一组 `Zend_Service_Amazon_EditorialReview` 对象构成的数组
SimilarProducts | array | 代表出版物的类似产品列表的一组 `Zend_Service_Amazon_SimilarProduct` 对象构成的数组
Accessories | array | 代表出版物的附属产品列表的一组 `Zend_Service_Amazon_Accessories` 对象构成的数组
Tracks | array | 代表ＣＤ或ＤＶＤ中歌曲数量和名称的数组
ListmaniaLists | array | 与指定出版物相关的Listmania列表 ，用 `Zend_Service_Amazon_ListmainList` 对象的数组表示
PromotionalTag | string | 指定出版物的促销Tag

Back to Class List

#### 15.3.6.2. Zend_Service_Amazon_Image

`Zend_Service_Amazon_Image` 代表产品的远程图片.

##### 15.3.6.2.1. 属性

表 15.2. Zend_Service_Amazon_Image 属性

名称 | 类型 | 描述
--- | --- | ---
Url | string | 图片的远程url
Height | int | 图片的高度(像素)
Width | int | 图片的宽度(像素)

Back to Class List

#### 15.3.6.3. Zend_Service_Amazon_ResultSet

`Zend_Service_Amazon_ResultSet` 对象由 Zend_Service_Amazon::itemSearch() 方法返回，并且允许你更容易的处理返回的结果集.

| 注意
该对象实现了 `SeekableIterator` 接口,我们可以很方便的进行遍历，也可以用`seek()`直接访问指定的结果.

##### 15.3.6.3.1. Zend_Service_Amazon_ResultSet::totalResults()

`int totalResults();`

返回返回的搜索结果的总数

Back to Class List

#### 15.3.6.4. Zend_Service_Amazon_OfferSet

每一个由 Zend_Service_Amazon::itemSearch() 和 Zend_Service_Amazon::itemLookup() 返回的结果都包含一个 `Zend_Service_Amazon_OfferSet` 对象 ,通过他我们可以得到出版物价格信息.

##### 15.3.6.4.1. 属性

表 15.3. Zend_Service_Amazon_OfferSet 属性

名称 | 类型 | 描述
--- | --- | ---
LowestNewPrice | int | 在"New"条件下，出版物的最低价
LowestNewPriceCurrency | string | `LowestNewPrice`所使用的货币
LowestOldPrice | int | 在"Used"条件下，出版物的最低价
LowestOldPriceCurrency | string | `LowestOldPrice`的货币
TotalNew | int | Total number of "new" condition available for the item
TotalUsed | int | 出版物可用的所有 "used" 条件的数量
TotalCollectible | int | 出版物可用的所有 "collectible" 条件的数量
TotalRefurbished | int | 出版物可用的所有 "refurbished" 条件的数量
Offers | array | `Zend_Service_Amazon_Offer` 对象的数组

Back to Class List

#### 15.3.6.5. Zend_Service_Amazon_Offer

出版物的价格信息都由Zend的 `Zend_Service_Amazon_Offer` 对象返回。

表 15.4. Zend_Service_Amazon_Offer 属性

名称 | 类型 | 描述
--- | --- | ---
MerchantId | string | 商品的 Amazon ID
GlancePage | string | 商品的的摘要页的URL
Condition | string | 出版物的情况
OfferListingId | string | ID 和价格列表
Price | int | 出版物的报价
CurrencyCode | string | 出版物价格的货币代码
Availability | string | 出版物的有效性
IsEligibleForSuperSaverShipping | boolean | 判断这个出版物是否符合Super Saver Shipping的条件

Back to Class List

#### 15.3.6.6. Zend_Service_Amazon_SimilarProduct

当我们搜索一个出版物时, Amazon 同时会返回一个相似产品的列表， 使顾客更容易找到他们喜欢的商品。这些类似产品的列表由`Zend_Service_Amazon_SimilarProduct` 对相返回.

每个对象包含相关的类似产品,并允许你进行进一步的请求来获得类似产品的全部信息

##### 15.3.6.6.1. 属性

表 15.5. Zend_Service_Amazon_SimilarProduct 属性

名称 | 类型 | 描述
--- | --- | ---
ASIN | string | 产品 Amazon ID (ASIN)
Title | string | 产品标题

Back to Class List

#### 15.3.6.7. Zend_Service_Amazon_Accessories

返回出版物的附属产品由 `Zend_Service_Amazon_Accessories` 对象表示

##### 15.3.6.7.1. 属性

表 15.6. Zend_Service_Amazon_Accessories 属性

名称 | 类型 | 描述
--- | --- | ---
ASIN | string | 产品 Amazon ID (ASIN)
Title | string | 产品标题

Back to Class List

#### 15.3.6.8. Zend_Service_Amazon_CustomerReview

顾客的每条评论由 `Zend_Service_Amazon_CustomerReview` 对相返回.

##### 15.3.6.8.1. 属性

表 15.7. Zend_Service_Amazon_CustomerReview 属性

名称 | 类型 | 描述
--- | --- | ---
Rating | string | 出版物的评分
HelpfulVotes | string | 关于对评论是否有用的投票
CustomerId | string | 顾客 ID
TotalVotes | string | 所有投票
Date | string | 评论的日期
Summary | string | 评论摘要
Content | string | 评论内容

Back to Class List

#### 15.3.6.9. Zend_Service_Amazon_EditorialReview

出版物的编辑评论由 `Zend_Service_Amazon_EditorialReview` 对相返回

##### 15.3.6.9.1. 属性

表 15.8. Zend_Service_Amazon_EditorialReview 属性

名称 | 类型 | 描述
--- | --- | ---
Source | string | 编辑评论的来源
Content | string | 评论内容

Back to Class List

#### 15.3.6.10. Zend_Service_Amazon_Listmania

每个相关的List Mania `Zend_Service_Amazon_Listmania` 对相返回.

##### 15.3.6.10.1. 属性

表 15.9. Zend_Service_Amazon_Listmania 属性

名称 | 类型 | 描述
--- | --- | ---
ListId | string | 列表 ID
ListName | string | 列表名称

Back to Class List

上一页 | 上一级 | 下一页
15.2. Zend_Service_Rest | 起始页 | 15.4. Zend_Service_Flickr