Лучшие практики для API в PHP: функции или классы? - PullRequest
3 голосов
/ 18 февраля 2010

В моей компании мы разработали несколько приложений. Мы должны создать API для одного приложения (скажем, приложения A), чтобы другие могли использовать его (его данные).

Вопрос в том, что мы уже разработали классы PHP для модели Приложения A, если мы хотим создать API, должны ли мы:
- повторно использовать эти классы (слишком много функций для API, слишком много ...)
- создать один класс PHP с некоторыми базовыми функциями, который принимает входные данные и возвращает только необработанные значения (например, строки, массив ... НЕ сложные классы)
- создать другой набор классов PHP, более простой и предназначенный только для использования внешним приложением (таким образом, только для простого получения данных)

Обычно, API - это 2-е решение (должно использоваться также и с PHP, а не в качестве веб-службы, например), но мне очень жаль, что мы сделали сложную и полезную модель классов, а потом просто разбили ее иметь функции, строки и массив. Третий мне кажется компромиссом, но мои коллеги утверждают, что это не API. Жаль ...

Что ты думаешь?

Ответы [ 4 ]

3 голосов
/ 18 февраля 2010

Решение № 3 может быть лучшим с архитектурной точки зрения. В основном вы используете Pattern Design Facade для упрощения вашего API. Поскольку я имею дело с этим на данный момент: в шаблонах архитектуры корпоративных приложений этот подход описывается как уровень обслуживания , который имеет смысл, поскольку вы не хотите показывать пользователя (имеется в виду тот, кто будет иметь дело с вашим API) с большей сложностью, чем фактически необходимо или желательно.

Это включает в себя использование максимально простого интерфейса и передачу объектов (необработанных значений, если они имеют смысл). Как только ваш Фасад вызывается через службы удаленного взаимодействия (например, веб-сервис), вам, в конечном счете, придется разбивать ответы и запросы на необработанные значения (контейнеры данных).

0 голосов
/ 18 февраля 2010

Я бы также сказал, взгляните на шаблон Фасад. Создайте набор классов Facade, которые предлагают только те функции, которые действительно необходимы для публичного использования. Эти классы наверняка используют ваши текущие базовые классы.

Это также дает вам преимущество в том, что если вы меняете базовые классы, API не обязательно должен изменяться.

0 голосов
/ 18 февраля 2010

Создайте несколько тонких оболочек, которые реализуют более простой API по сравнению с оригинальными классами.НЕ переопределяйте какую-либо бизнес-логику в оболочке - это может привести к неприятностям, если какая-либо из этих логик изменится, так как вы наверняка потеряете возможность отслеживать, какая часть была изменена, а какая нет.Сохраняйте внешние входы / выходы простыми, если вам нужно что-то более сложное, чем строка, используйте XML или JSON для структурированных данных, но постарайтесь избежать слишком большой сложности - если у вас есть две вещи для передачи двух параметров запроса, это может быть намного лучше, чем одна структурас 2 полями.

Это шаблон 'Фасад'.

0 голосов
/ 18 февраля 2010

Создание набора классов Facade, которые упрощают общедоступный API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...