저는 CodeIgniter에만 국한된 내용을 말할 수는 없지만 다양한 MVC 라이브러리를 사용하여 일반적인 개요를 제공 할 수 있습니다. 옵션은 다음과 같습니다
I)는 처음부터 모델을 쓰기
대부분 "모델"공간에 끝날 것 MWS를 액세스하는 새로운 코드입니다. 컨트롤러와 뷰 (아마 결국 필요하게 될 것입니다)는 아마존이 제공하는 코드의 범위를 벗어나므로 어쨌든 작성해야합니다. MVC (및 OOP) 아이디어가 나오는 한,이 작업을 수행하는 "적절한"방법이며, 상속 및 다형성을 최대한 활용할 수 있습니다.
장점 : MWS에 액세스하는 모델은 MVC 프레임 워크의 규칙 및 지침을 따릅니다. 프레임 워크의 다른 부분에 쉽게 통합하고 나머지 코드와 쉽게 통합 할 수 있습니다.
단점 : 많은 코드 작성 및 (더 중요한 것은 MWS는 움직이는 대상이기 때문에) 유지 관리합니다.
II)는
아마존의 코드는 "라이브러리"우주로 갈 것 라이브러리로 아마존의 코드를 사용합니다. MVC 프레임 워크의 규칙을 따르지 않으므로 코드의 나머지 부분에 대해 "느낀다".
장점 : 쓰기 및 유지 보수가 적은 코드.
단점 : 프레임 워크의 사용, 코드 재사용, 상속 없음 및 다형성 없음.
III)의 래퍼
이 쓰기는 기본적으로 위의 두 가지의 혼합이다. 수정되지 않은 Amazon 라이브러리를 호출하는 라이브러리 주위에 매우 얇은 래퍼 (Model 공간으로 들어가기)를 작성합니다. 제대로 작성되면 "두 가지 장점 모두"를 얻을 수 있습니다. 이는 인터페이스가 라이브러리가 원하는 모델 인터페이스와 얼마나 일치하는지에 따라 다릅니다.
장점 :. 종종 약간의 추가 코드가 필요하다 모델이 완전히 재 작성과 같은 방법으로 사용할 수 있습니다하면서 "도서관"접근 "에 비해
단점 : 때때로 거의만큼 필요 처음부터 작성과 같은 코드입니다.
제안 및 의견
내 접근 방식은 아마도 PHP는 엄격한 객체 계층 구조를 가지고 있지 않기 때문에 나는. 라이브러리의 코드의 단지 일부를 필요로하지 않는 한, 래퍼와 함께 갈 것 , 대개 적절하게 할 수 있습니다. 필요한 경우 상속을 모방합니다.
MWS 주변의 모델 설계에 대한 보조 노트 : 대부분의 웹 서비스와 달리 MWS API에 대한 일부 호출 (예 : MWS API).SubmitFeed)는 작업의 성공 또는 실패에 대한 정보가 호출이 이루어진 후 몇 분 (또는 심지어 몇 시간) 만 사용할 수 있다는 점에서 비동기 적으로 작동합니다. 대부분의 MVC 모델 계층 구조와 인터페이스는 이러한 유형의 작업을 잘 처리 할 수 있도록 설계되지 않았으므로 완전한 재 작성으로 인해 일반적으로 얻을 수있는 이점을 얻지 못할 수도 있습니다.
CodeIgniter에 대해 알지 못합니다. 귀하의 마일리지가 다를 수 있습니다.