[PHP] Jak wymieniać dane pomiędzy różnymi językami skryptowymi z zastosowaniem WDDX?
Chcesz mieć możliwość przekazywania danych pomiędzy różnymi skryptami za pomocą technologii WDDX (Web Distributed Data Exchange).
Tworząc ośrodki WWW z pewnością zetkniesz się z potrzebą przekazywania zmiennych lub tablic pomiędzy różnymi aplikacjami napisanymi w PHP, Perlu, czy ASP. Najlepiej gdyby dane były przesyłane w wersji tekstowej i zgodnie z wymogami języka XML.
Technologią, która pozwala przekazywać dane w prostym i czytelnym formacie jest właśnie WDDX. Skrypty mogą przesyłać pomiędzy sobą zmienne i tablice bez względu na język, w którym zostały napisane. Zobacz jak w PHP można wysłać i odebrać dane z/do innych skryptów.
Sama idea WDDX jest bardzo prosta. Zmienna ze skryptu zamieniana jest na pakiet opisujący typ i wartość zmiennej w postaci struktury XML. Po zamienieniu zmiennej na WDDX można przesłać ją przez Internet jako zwykły tekst.
Zamieńmy string na WDDX:
$zmienna="napis";
$wddx=wddx_serialize_value($zmienna);
echo $wddx;
Serializacja powoduje zamianę podanej zmiennej na pakiet WDDX. Wygląda on następująco:
<wddxPacket version='1.0'>
<header/>
<data><string>napis</string></data>
</wddxPacket>
Jak widzisz, w strukturze WDDX występuje wartość zmiennej o nazwie "napis", wiadomo też, że jest to zmienna tekstowa (string). W identyczny sposób można zamienić w pakiet WDDX tablicę.
$tablica[]="Jan";
$tablica[]="Ala";
$tablica[]=12;
$wddx=wddx_serialize_value($tablica);
echo $wddx;
Skrypt tworzy pakiet WDDX wyglądający następująco:
<wddxPacket version='1.0'><header/><data><array length='3'>
<string>Jan</string><string>Ala</string><number>12</number>
</array></data></wddxPacket>
Skrypt odbierający dane będzie wiedział, że tablica składa się z trzech elementów, w której są dwa stringi i jeden numer.
Mamy już skrypty, które produkują pakiety WDDX. Czas odebrać takie pakiety z innych aplikacji. Pobieramy więc dane w postaci pakietu WDDX i konwertujemy do zmiennych.
Pobierzmy zwykłą zmienną z jakiegoś skryptu zwracającego wynik w WDDX:
$wddx = join("",file("http://www.jakisserwer.pl/skrypt.asp"));
$wddx = wddx_deserialize($wddx);
echo $wddx;
Funkcja file() pobiera pakiet WDDX (czyli wartość zwracaną przez skrypt np. ASP), następnie funkcja join() przekształca plik na string i poddawany jest on konwersji na zwykłą zmienną w PHP.
Podobnie postąpimy z tablicą:
$wddx = join("",file("http://www.jakisserwer.pl/skrypt.asp"));
$wddx = wddx_deserialize($wddx);
foreach($wddx as $element) {
echo " $element ";
}
Jedyna różnica jest w wypisywaniu zawartości tablicy na ekran, wyłącznie po to aby zobaczyć czy tablica została poprawnie pobrana.
Ponieważ WDDX jest technologią prostą i obsługuje ją coraz więcej języków skryptowych warto tworzyć skrypty, które w ten sposób będą przekazywały między sobą dane lub wyniki obliczeń. Konstrukcja skryptów w innych językach jest zbliżona do przykładów w PHP.