Я немного знаком с использованием Apache Amazon MWS, но я новичок в CodeIgniter и всей работе hmvc. Мне любопытно, как добавить api в CodeIgniter. Должен ли я проанализировать весь api в соответствующих папках mvc, или я могу просто добавить его в качестве библиотеки. Если это так, как бы я использовал api?
Извините, если это расплывчато, но я бы очень признателен за любую помощь, которую вы готовы предложить! благодаря
Я не могу сказать ничего особенного для CodeIgniter, но я работал с различными библиотеками MVC, поэтому я могу дать общий обзор. Ваши варианты:
I) Напишите модель с нуля
Новый код доступа к MWS будет в основном попадать в пространство «Модель». Контроллеры и представления (которые вам, вероятно, в конечном итоге понадобятся) выходят за рамки кода, который предоставляет Amazon, поэтому они должны быть написаны так или иначе. Что касается идеи MVC (и ООП), это «правильный» способ сделать это, вы можете в полной мере использовать наследование и полиморфизм.
Преимущества: ваша модель, обращающаяся к MWS, будет следовать правилам и рекомендациям вашей среды MVC. Легко будет интегрироваться в другие части структуры и легко интегрироваться с остальной частью кода.
Недостатки: много кода для написания и (что более важно, поскольку MWS – движущаяся цель).
II) Использовать код Amazon как библиотеку
Код Амазонки войдет в пространство «Библиотеки». Поскольку он не соответствует правилам вашей структуры MVC, он будет «чувствовать» чуждый остальной части кода.
Преимущества: Меньше кода для написания и обслуживания.
Недостатки: отсутствие использования фреймворка, повторное использование кода, отсутствие наследования и отсутствие полиморфизма.
III) Напишите обертку
Это в основном сочетание двух вариантов выше. Вы пишете очень тонкую обертку вокруг библиотеки (входит в пространство модели), которая вызывает немодифицированную библиотеку Amazon. Написано правильно, вы можете получить «лучшее из обоих миров» – это зависит от того, насколько интерфейс библиотеки соответствует вашему желаемому интерфейсу модели.
Преимущества: Часто требуется только небольшой дополнительный код по сравнению с «библиотечным» подходом », в то время как модель может использоваться так же, как полная переписывание.
Недостатки: иногда требуется почти столько же кода, сколько и с нуля.
Предложения и комментарии
Мой подход, вероятно, состоял бы в том, чтобы пойти с оболочкой, если мне не нужна только часть кода библиотеки. Поскольку PHP не имеет строгой иерархии объектов, обычно, возможно, правильно имитировать наследование, если это необходимо.
Замечание о разработке модели вокруг MWS: в отличие от большинства веб-сервисов, некоторые вызовы API MWS (например, SubmitFeed) работают асинхронно в этой информации об успешном завершении или выходе из строя, будут доступны только минуты (или даже часы) после вызов был сделан. Большинство иерархий и интерфейсов модели MVC не предназначены для эффективного управления этим типом вещей, поэтому полная переработка может не дать вам преимуществ, которые вы обычно получаете.
Пожалуйста, помните, что я не знаю о CodeIgniter. Ваш пробег может отличаться.
Мое решение специально для Yii PHP Framework, но принцип должен работать модифицированным для автозагрузчика внешней библиотеки Codeigniter:
Поместите весь пакет Amazon MWS PHP SDK в папку «Поставщики» или в папку «Расширения» или любой другой CI, предпочитающий внешние библиотеки. Возможно, вам придется создать эту папку и обратиться к ней в CI
Затем узнайте, как использовать автозагрузчик CI, чтобы он автоматически загружал библиотеку с шага 1 выше.
Затем просто вызовите любую часть библиотеки Amazon MWS с шага 1 из ваших контроллеров.
Это быстрый ответ, поэтому, если я пропустил что-то, дайте мне знать, чтобы я мог редактировать.
Для более подробного обсуждения посетите ниже, чтобы узнать, как мы преодолели это вместе с точным кодом, который мы использовали для автозагрузчика, и другими вещами, связанными с пакетом SDK Amazon MWS PHP