我不能说特定于 CodeIgniter 的东西,但我使用过各种 MVC 库,所以我可以给出一个总体概述。您的选择是:
I) 从头开始编写模型
访问 MWS 的新代码大多会出现在“模型”空间中。控制器和视图(您可能最终需要)超出了 Amazon 提供的代码范围,因此无论如何都需要编写它们。就 MVC(和 OOP)思想而言,这是“正确”的做法,您可以充分利用继承和多态性。
优点:您的模型访问 MWS 将遵循您的 MVC 框架的规则和指南。它将很容易集成到框架的其他部分,并与其余代码很好地集成。
缺点:需要编写和维护大量代码(更重要的是,因为 MWS 是一个移动目标)。
II) 使用亚马逊的代码作为库
亚马逊的代码将进入“库”空间。由于它不遵循 MVC 框架的规则,它会“感觉”与其余代码“陌生”。
优点:编写和维护的代码更少。
缺点:没有使用框架,没有代码重用,没有继承,没有多态性。
III) 编写包装器
这基本上是上述两个选项的混合。您在库周围编写了一个非常薄的包装器(进入模型空间),它调用未修改的 Amazon 库。如果编写得当,您可能会得到“两全其美”——这取决于库的接口与您所需的模型接口的匹配程度。
优点:与“库”方法相比,通常只需要很少的额外代码,而模型可以以与完全重写相同的方式使用。
缺点:有时需要几乎与从头开始编写一样多的代码。
建议和意见
我的方法可能是使用包装器,除非我只需要库代码的一小部分。由于 PHP 没有严格的对象层次结构,因此如果需要,通常可以适当地模拟继承。
关于围绕 MWS 设计模型的附注:与大多数 Web 服务不同,对 MWS API 的某些调用(例如 SubmitFeed)是异步工作的,因为有关操作成功或失败的信息只能在几分钟(甚至小时) 通话后。大多数 MVC 模型层次结构和接口都无法很好地处理这种类型的事情,因此完全重写可能不会给您带来通常会获得的好处。
请记住,我对 CodeIgniter 一无所知。您的里程可能会有所不同。