Рекомендации по обработке данных JSON для API SDK

#php

#php

Вопрос:

У компании, в которой я работаю, есть API, и я переношу этот API на PHP. Прямо сейчас API возвращает мне большой объект JSON, и я пытаюсь выяснить, как мне следует обрабатывать данные. У меня могла бы быть целая куча методов «get», таких как:

 $t = new APIThing();
$t->getJSONObjects();
for ($i=0; ...) {
   $t->getHeadline($i);
}
  

Или я мог бы вернуть объект JSON и позволить людям самим играть с данными, так что это было бы что-то вроде этого

 $t = new APIThing();
$t->getJSONObjects();
foreach ($t as $u) {
    echo $u->headline;
}
  

Итак, что вы думаете? Просто предоставить объект JSON или преобразовать все это в функции?

Комментарии:

1. Обычно второй подход проще. Если вы не планируете изменять поведение средства получения заголовка, то его безопасно не использовать.

Ответ №1:

вместо этого у вас может быть класс, который получает что-либо из JSON

 class GETAPI {

   protected $api;

   function __construct(){
        $this->api = new APIThing();
        $this->api->getJSONObjects();
   }

   function getAllFromAPI($name){
       foreach($this->api as $u){
           echo $u->$name;
       }
   }

   //or :
   function getFromAPI($name, $index){
       return $this->api[$index]->$name;
   }

}
  

это элементарно и могло бы потребовать некоторой работы, но эта работа заключается в создании многих функций get

чем все, что вам нужно было бы сделать, это что-то вроде:

 $api = new GETAPI();

$api->getAllFromAPI('headline');
//or
echo $api->getFromAPI('headline', 1); // with one as the array index
  

Комментарии:

1. Я тоже вроде как думал об этом подходе … просто используя функцию PHP magic __call()… но внутри объектов есть объекты, и я думаю, что это может стать немного сложным

2. возможно, также: я забыл $this в моем примере, я добавил это в

3. аааа, я также не вижу, что ваш объект был в цикле, через секунду я исправлю код

4. @JoeC, теперь я создал в вызове 2 отдельные функции: одну для получения всех данных из api, а другую только для получения индекса