Разработчику. Сборник рецептов PHP
Задавайте вопросы

Обмен данными с помощью WDDX

Вернуться назад

Задача

Необходимо преобразовать данные в последовательный вид с помощью формата WDDX или провести обратное преобразование принятых в формате WDDX данных. Это позволит общаться со всеми, кто поддерживает формат WDDX

Решение

Используем PHP-расширение WDDX. Переводим несколько переменных в последовательную форму с помощью функции wddx_serialize_vars():

$a = 'string data';
$b = 123;
$c = 'rye';
$d = 'pastrami';
$array = array('c', 'd');

$wddx = wddx_serialize_vars('a', 'b', $array);

Также можно запустить пакет WDDX с помощью функции wddx_packet_start() и добавлять данные по мере их поступления с помощью функции wddx_add_vars():

$wddx = wddx_packet_start('Some of my favorite things');

// выполняем цикл по данным
while ($array = mysql_fetch_array($r)) {
        $thing = $array['thing'];
        wddx_add_vars($wddx, 'thing');

}

$wddx = wddx_packet_end($wddx);

Используем функцию wddx_deserialize() для сериализации данных:

// переменная $wddx содержит пакет WDDX
$vars = wddx_deserialize($wddx);

Обсуждение

WDDX, расшифровываемый как формат обмена распределенной веб-информацией (Web Distributed Data eXchange), был одним из первых XML-форматов совместного использования информации, основанных на принципе независимости от языка. Придуманный компанией под эгидой ColdFusion, формат WDDX достиг большой популярности в 1999 году, но в настоящее время совсем не развивается.

Вместо WDDX многие начали использовать SOAP. Но формат WDDX имеет свое преимущество простоты. Поэтому если для вас главным является информация, которой вы обмениваетесь, то WDDX может стать хорошим выбором. Кроме того, вследствие происхождения его легко читать и записывать в ColdFusion. Если требуется взаимодействие с приложением ColdFusion, формат WDDX будет очень полезен.

Формату WDDX требуется библиотека expat, доступная в Apache версии 1.3.7 и выше или на сайте http://www.jclark.com/xml/expat.html. Для работы с WDDX сконфигурируйте PHP с опциями --with-xml и --enable-wddx.

Пример в «Решении» выдает следующий XML-документ (отформатированный для облегчения восприятия):

<wddxPacket version='1.0'>
<header/>
<data>
      <struct>
          <var name='a'><string>string data</string></var>
          <var name='b'><number>123</number></var>
          <var name='c'><string>rye</string></var>
          <var name='d'><string>pastrami</string></var>
      </struct>
</data>
</wddxPacket>

Переменные заключены в теги <var> , в которых атрибуту name в качестве значения присвоено имя переменной. Внутри этих тегов находится ряд других, означающих тип переменных, таких как string, number, dateTime, boolean, array, binary или recordSet. И наконец, внутри находятся сами данные.

Кроме того, можно сериализовать одну переменную за раз с помощью функции wddx_serialize_value:

// one variable
$s = wddx_serialize_value('Serialized', 'An optional comment');

В результате получим следующий XML-текст:

<wddxPacket version='1.0'>
<header>
       <comment>An optional comment</comment>
</header>
<data>
       <string>Serialized</string>
</data>
</wddxPacket>

Вернуться назад

Рейтинг@Mail.ru

Яндекс.Метрика

Индекс цитирования

Рейтинг Сайтов ДОСКИ.РУ