使用Amazon MWS(库存API)和CodeIgniter (PHP)


Using Amazon MWS (Inventory API) with CodeIgniter (PHP)

我对使用Amazon MWS api有点熟悉,但我是CodeIgniter和整个hmvc的新手。我很好奇如何将api添加到CodeIgniter中。我是否必须将整个api分解到适当的mvc文件夹中,或者我可以将其添加为库。如果是后者,我将如何使用api?

我很抱歉,如果这是模糊的,但我将非常感谢您愿意提供的任何帮助!由于

我不能说任何具体的CodeIgniter,但我已经使用过各种MVC库,所以我可以给出一个一般的概述。你的选择是:

I)从头开始编写模型

访问MWS的新代码将主要在"模型"空间结束。控制器和视图(您最终可能需要它们)不在Amazon提供的代码范围之内,因此无论如何都需要编写它们。就MVC(和OOP)思想而言,这是"正确"的方法,您可以充分利用继承和多态性。

优点:您的模型访问MWS将遵循您的MVC框架的规则和指导方针。它将很容易集成到框架的其他部分,并与其他代码很好地集成。

缺点:需要编写和维护大量的代码(更重要的是,因为MWS是一个移动的目标)。

II)使用Amazon的代码作为库

亚马逊的代码将进入"图书馆"空间。由于它不遵循MVC框架的规则,因此对其他代码会"感觉"陌生。

优点:编写和维护的代码较少。

缺点:不使用框架,没有代码重用,没有继承,没有多态性。

III)写一个包装

这基本上是上述两个选项的混合。在库周围编写一个非常薄的包装器(进入Model空间),它调用未修改的Amazon库。如果编写得当,您可能会得到"两全其美"——这取决于库的接口与您期望的模型接口的匹配程度。

优点:与"库"方法相比,通常只需要很少的额外代码,而模型可以以完全重写的方式使用。

缺点:有时需要的代码几乎和从头开始编写一样多。

建议与意见

我的方法可能是使用包装器,除非我只需要库的一小部分代码。由于PHP没有严格的对象层次结构,因此如果需要,通常可以适当地模拟继承。

关于围绕MWS设计模型的旁注:与大多数web服务不同,对MWS API的一些调用(例如SubmitFeed)是异步工作的,因为有关操作成功或失败的信息仅在调用后几分钟(甚至几小时)才可用。大多数MVC模型的层次结构和接口都不是为处理这种类型的事情而设计的,所以完全重写可能不会给你带来通常会得到的好处。

请记住,我对CodeIgniter一无所知。

我的解决方案是专门针对Yii PHP框架的,但原则应该适用于Codeigniter外部库自动加载器:

  1. 将整个Amazon MWS PHP SDK放入您的vendor文件夹或Extensions文件夹或CI喜欢的外部库。您可能需要创建该文件夹并在CI

  2. 中引用它
  3. 然后了解如何使用CI的自动加载器,以便它自动加载上面步骤1中的库。

  4. 然后从控制器中调用步骤1中Amazon MWS库的任何部分。

这是一个快速的回复,所以如果我错过了什么,请告诉我,以便我可以编辑。

关于更深入的讨论,请访问下面,看看我们是如何克服这个问题的,以及我们用于自动加载器和其他处理Amazon MWS PHP SDK的东西的确切代码

http://www.jescor.com/amazon-price-update-program/