SOAP to protokół usług sieciowych. Prościej? Pozwala na zdefiniowanie zbioru funkcji, które możemy wykorzystywać, bądź udostępniać innym zdalnie. Wystarczy znać parametry wywołań, nazwy funkcji i zwracany obiekt.

SOAP to jak najbardziej przyszłościowa technologia, ponieważ na jednej stronie będziemy mogli wykorzystać funkcjonalność innych serwisów czy aplikacji. Potrzebujesz aktualnych kursów walut? Męczysz się z parsowaniem strony NBP? Może lepiej poszukać serwisu, który udostępnia odpowiednią funkcję?

Do rzeczy. Po pierwsze potrzebujesz włączonego rozszerzenia PHP php_soap.dll Następnie potrzebujemy klienta dla naszej usługi. Podstawowa konfiguracja pliku soap_client.php:


<?php
//Ustalenie adresu serwera:
$location = sprintf('http://%s%s/soap_server.php',
$_SERVER['HTTP_HOST'],
dirname($_SERVER['SCRIPT_NAME']));

//Utworzenie obiektu klienta SOAP
$soap = new SoapClient(null, array('location' => $location, 'uri'      => ''));

//wykorzystanie funkcji udostępnionej przez serwer
$ret = $soap->remoteToUpper('SOAP - i like it!');

echo $ret; //zwraca napis "SOAP - I LIKE IT!"
?>

Plik serwera soap_server.php, czyli właściwa implementacja usługi:


<?php
//Przekształca ciąg znaków na pisany wersalikami
function remoteToUpper($str){
return strtoupper($str);
}
//Utworzenie serwera SOAP i wyeksportowanie funkcji remoteToUpper()
$soap = new SoapServer(null, array('uri' => ''));
$soap->addFunction('remoteToUpper');

//Użycie żądania POST dla wywołania usługi
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$soap->handle();
}
else {
//Bez podanych parametrów - wypisana zostanie lista dostępnych funkcji serwera SOAP
echo "Funkcje udostępnione:\n";
foreach ($soap->getFunctions() as $func) {
echo $func . "\n";
}
}
?>

Oczywiście przykład podany powyżej jest banalny, ale SOAP umożliwia stworzenie naprawdę potężnych zbiorów funkcji i budowę rozproszonych systemów o wygodnej, bo kapsułkowej budowie.

Najczęściej udostępnione przez serwer funkcje zwracają odpowiednie dane zawarte w lokalnych bazach danych.

Jeżeli przydały Ci się te informacje, wiesz już jak napisać serwer SOAP – podziel się wrażeniami w komentarzu!