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

Уроки по PHP, Javascript и т.п.
Ответить
Evegeniy
Сообщения: 51
Зарегистрирован: 21 фев 2013, 16:49

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

Сообщение Evegeniy »

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

Код: Выделить всё

function u_Encode($data, $type, $al){    if ($type == "json")    {        if ($al == TRUE) return  json_encode(array("response"=>$data));        exit(json_encode(array("response"=>$data)));    }else{        if (file_exists('Array2XML.php')){   //есть ли библиотека            require_once 'Array2XML.php';            $converter = new Array2XML();            $converter->setRootName("response");        $xmlStr = $converter->convert($data);        if ($al == TRUE) return $xmlStr;            exit($xmlStr);        }else{            return FALSE;        }    }}
Пример php файла :

Код: Выделить всё

<?phpfunction u_Encode($data, $type, $al){    if ($type == "json")    {        if ($al == TRUE) return  json_encode(array("response"=>$data));        exit(json_encode(array("response"=>$data)));    }else{        if (file_exists('Array2XML.php')){   //есть ли библиотека            require_once 'Array2XML.php';            $converter = new Array2XML();            $converter->setRootName("response");        $xmlStr = $converter->convert($data);        if ($al == TRUE) return $xmlStr;            exit($xmlStr);        }else{            return FALSE;        }    }} $first = (isset($_GET['fn']))? $_GET['fn']: "Test";$last = (isset($_GET['ln']))? $_GET['ln']: "Tost";$format = (isset($_GET['format']))? $_GET['format']: "json"; u_Encode(array('first'=>$first, 'last'=>$last), $format, false);?>
Домашнее задание : сделать смену заголовков при выводе.
Спасибо за внимание =)
Ответить