我对使用亚马逊 MWS api 有点熟悉,但我对 CodeIgniter 和整个 hmvc 东西还是陌生的。我很好奇如何将 api 添加到 CodeIgniter 中。我是否必须将整个 api 分解到适当的 mvc 文件夹中,或者我可以将其添加为库。如果是后者,我将如何使用 api?
如果这含糊不清,我很抱歉,但我将非常感谢您愿意提供的任何帮助!谢谢
我对使用亚马逊 MWS api 有点熟悉,但我对 CodeIgniter 和整个 hmvc 东西还是陌生的。我很好奇如何将 api 添加到 CodeIgniter 中。我是否必须将整个 api 分解到适当的 mvc 文件夹中,或者我可以将其添加为库。如果是后者,我将如何使用 api?
如果这含糊不清,我很抱歉,但我将非常感谢您愿意提供的任何帮助!谢谢
我不能说特定于 CodeIgniter 的东西,但我使用过各种 MVC 库,所以我可以给出一个总体概述。您的选择是:
I) 从头开始编写模型
访问 MWS 的新代码大多会出现在“模型”空间中。控制器和视图(您可能最终会需要)超出了 Amazon 提供的代码范围,因此无论如何都需要编写它们。就 MVC(和 OOP)思想而言,这是“正确”的做法,您可以充分利用继承和多态性。
优点:您的模型访问 MWS 将遵循您的 MVC 框架的规则和准则。它将很容易集成到框架的其他部分,并与其余代码很好地集成。
缺点:需要编写和维护大量代码(更重要的是,因为 MWS 是一个移动的目标)。
II) 使用亚马逊的代码作为库
亚马逊的代码将进入“图书馆”领域。由于它不遵循 MVC 框架的规则,它会“感觉”与其余代码“陌生”。
优点:编写和维护的代码更少。
缺点:没有使用框架,没有代码重用,没有继承,没有多态性。
III) 写一个包装器
这基本上是上述两个选项的混合。您在库周围编写了一个非常薄的包装器(进入模型空间),它调用未修改的 Amazon 库。如果编写得当,您可能会得到“两全其美”——这取决于库的接口与您所需的模型接口的匹配程度。
优点:与“库”方法相比,通常只需要很少的额外代码,而模型可以以与完全重写相同的方式使用。
缺点:有时需要几乎与从头开始编写一样多的代码。
建议和意见
我的方法可能是使用包装器,除非我只需要库代码的一小部分。由于 PHP 没有严格的对象层次结构,因此如果需要,通常可以适当地模拟继承。
关于围绕 MWS 设计模型的附注:与大多数 Web 服务不同,对 MWS API 的某些调用(例如 SubmitFeed)是异步工作的,因为有关操作成功或失败的信息仅在几分钟(甚至几小时)后才可用电话已拨通。大多数 MVC 模型层次结构和接口都不能很好地处理这种类型的事情,因此完全重写可能不会给您带来通常会获得的好处。
请记住,我对 CodeIgniter 一无所知。你的旅费可能会改变。
我的解决方案是专门针对 Yii PHP 框架的,但原理应该针对 Codeigniter 外部库自动加载器进行修改:
将整个亚马逊 MWS PHP SDK 放入您的供应商文件夹或扩展文件夹或任何 CI 喜欢用于外部库的文件夹中。您可能必须创建该文件夹并在 CI 中引用它
然后了解如何使用 CI 的自动加载器,以便从上面的步骤 1 中自动加载库。
然后只需从您的控制器调用步骤 1 中亚马逊 MWS 库的任何部分。
这是快速回复,所以如果我错过了什么,请告诉我,以便我进行编辑。
如需更深入的讨论,请访问下方了解我们如何克服此问题以及我们用于自动加载器的确切代码以及处理亚马逊 MWS PHP SDK 的其他内容