Универсальный вывод данных с сервера [XML, JSON]

Уроки по PHP, Javascript и т.п.

Универсальный вывод данных с сервера [XML, JSON]

Сообщение Evegeniy » 08 май 2013, 21:53

Всем привет. Сегодня я расскажу вам как написать функцию универсального вывода данных (JSON или XML)
Кому может быть полезен данный код? Да любому разработчику, который хочет сделать свой мини api модуль =)
Для начала определим функцию вывода : u_Encode($data, $type, $al)
Обозначения :
$data - массив информации которую требуется вывести
$type - тип вывода (xml или json)
$al - флаг обозначающий что будет в итоге (true - функция вернёт весь текст чтобы потом после остального кода через exit вывести данные. false - в конце функции будут установлены заголовки и данные будут выведены через exit)
Итак для вывода в json нам не потребуется ничего дополнительного. С XML дела обстоят немного иначе. Когда мне потребовалось реализовать такую возможность я нарыл в гугле библиотеку, которая использует стандартные возможности php. Автору этой либы низкий поклон. Итак, её можно найти здесь : Тыц
После того как скачали либу положим её рядом с основным файлом кода. Вот код реализации функции :

  1. function u_Encode($data, $type, $al)
  2. {
  3.     if ($type == "json")
  4.     {
  5.         if ($al == TRUE) return  json_encode(array("response"=>$data));
  6.         exit(json_encode(array("response"=>$data)));
  7.     }else{
  8.         if (file_exists('Array2XML.php')){   //есть ли библиотека
  9.             require_once 'Array2XML.php';
  10.             $converter = new Array2XML();
  11.             $converter->setRootName("response");
  12.         $xmlStr = $converter->convert($data);
  13.         if ($al == TRUE) return $xmlStr;
  14.             exit($xmlStr);
  15.         }else{
  16.             return FALSE;
  17.         }
  18.     }
  19. }


Пример php файла :
  1. <?php
  2. function u_Encode($data, $type, $al)
  3. {
  4.     if ($type == "json")
  5.     {
  6.         if ($al == TRUE) return  json_encode(array("response"=>$data));
  7.         exit(json_encode(array("response"=>$data)));
  8.     }else{
  9.         if (file_exists('Array2XML.php')){   //есть ли библиотека
  10.             require_once 'Array2XML.php';
  11.             $converter = new Array2XML();
  12.             $converter->setRootName("response");
  13.         $xmlStr = $converter->convert($data);
  14.         if ($al == TRUE) return $xmlStr;
  15.             exit($xmlStr);
  16.         }else{
  17.             return FALSE;
  18.         }
  19.     }
  20. }
  21.  
  22. $first = (isset($_GET['fn']))? $_GET['fn']: "Test";
  23. $last = (isset($_GET['ln']))? $_GET['ln']: "Tost";
  24. $format = (isset($_GET['format']))? $_GET['format']: "json";
  25.  
  26. u_Encode(array('first'=>$first, 'last'=>$last), $format, false);
  27. ?>


Домашнее задание : сделать смену заголовков при выводе.
Спасибо за внимание =)
Evegeniy

 
Автор темы
Сообщения: 51
Зарегистрирован: 21 фев 2013, 16:49
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Чтобы убрать блок с рекламой, зарегистрируйтесь на форуме или войдите.

Google
 



Вернуться в Уроки на другие темы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0