Многие организации используют Apache и PHP в качестве среды веб-приложений. Внедрение PHP в режиме веб-сервисов может показаться трудным. Но на самом деле с NuSoap вы можете легко использовать PHP для создания клиента и сервера SOAP.
Чтобы проиллюстрировать, как использовать NuSoap и PHP для создания веб-сервисов, мы приведем простой пример. Этот пример приложения состоит из сервера и клиента веб-служб PHP. Он будет реализовывать две функции: изменение порядка символов в строке на противоположный и поиск суммы двух чисел.
PHP SOAP-сервер Настроить SOAP-сервер с помощью PHP и NuSoap очень просто. По сути, вы просто пишете функции, которые хотите предоставить своим веб-сервисам, и регистрируете их в NuSoap.
Хорошо, для завершения установки сервера PHP SOAP необходимо выполнить еще два шага. Сначала вам нужно создать экземпляр объекта NuSoap в своем PHP-коде, а затем использовать метод HTTP POST для передачи необработанных данных в NuSoap для обработки. Звучит просто? Давайте сначала взглянем на листинг 1.
Листинг 1: Soapfunc.php
<?
require_once('nusoap.php');
функция реверс($str){
$ретвал = "";
если(strlen($str) < 1) {
вернуть новый Soap_fault('Клиент','','Неверная строка');
}
for ($i = 1; $i <= strlen($str); $i++) {
$retval .= $str[(strlen($str) - $i)];
}
вернуть $ретвал;
}
функция add2numbers($num1, $num2) {
if (trim($num1) != intval($num1)) {
return new Soap_fault('Client', '', 'Первое число неверно');
}
if (trim($num2) != intval($num2)) {
return new Soap_fault('Client', '', 'Второй номер недействителен');
}
возврат ($num1 + $num2);
}
?>
В листинге 1 показан исходный файл Soapfunc.php. Этот файл содержит две функции, которые мы хотим предоставить веб-службам через протокол SOAP:verse и add2numbers, которые являются ядром нашего приложения веб-служб. Функция реверса принимает один аргумент, меняет порядок символов в строке и возвращает его.
Листинг 2: Soapserver.php
<?
require_once('nusoap.php');
include('soapfunc.php');
$soap = новый мыльный_сервер;
$soap->register('обратный');
$soap->register('add2numbers');
$soap->service($HTTP_RAW_POST_DATA);
?>
Листинг 2 иллюстрирует использование функций регистрации NuSoap и вызов обработчиков SOAP. Как видите, зарегистрировать две функции (в Soapfunc.php) и передать данные POST объекту мыла_сервера так же просто, как создать новый экземпляр объекта мыла_сервера. Объект мыла_сервера проверит данные POST и определит, какую функцию вызывать, а затем передаст параметры этой функции PHP. Данные, возвращаемые функцией PHP, переупаковываются в ответ SOAP и доставляются клиенту SOAP, запрашивающему услугу.
PHP SOAP-клиент Теперь, когда мы создали SOAP-сервер с использованием NuSoap и PHP, нам нужно его протестировать. Точно так же, как мы создали программу-сервер SOAP, мы можем использовать NuSoap для создания клиентской программы SOAP на PHP. В листинге 3 показан исходный код клиентской программы PHP SOAP.
Теперь, когда мы создали сервер SOAP с использованием NuSoap и PHP, нам нужно его протестировать. Точно так же, как мы создали программу сервера SOAP, мы можем использовать NuSoap для создания клиентской программы SOAP на PHP. В листинге 3 показан исходный код клиентской программы PHP SOAP.
Листинг 3: Soapclient.php
<?
включить('nusoap.php');
$client = new Soapclient('http://localhost/soapserver.php');
$str = "Эта строка будет перевернута";
$params1 = массив('str'=>$str);
$reversed = $client->call('reverse',$params1);
echo "Если вы перевернете '$str', вы получите '$reversed'<br>n";
$n1 = 5;
$n2 = 14;
$params2 = array('num1'=>$n1, 'num2'=>$n2);
$added = $client->call('add2numbers', $params2);
echo "Если вы добавите $n1 и $n2, вы получите $added<br>n";
?>
Чтобы использовать клиентскую программу PHP на сервере SOAP, вам необходимо сделать три вещи. Во-первых, вам нужно создать объект мыльного клиента. Объект Soapclient отвечает за обработку сортировки параметров и протокола SOAP. Soapclient требует параметра, который должен быть URL-адресом. Этот URL-адрес может указывать на конечную точку HTTP или описание WSDL фактического сервера SOAP. В нашем случае это URL-адрес, указывающий на наш сервер PHP SOAP.
При вызове функции, требующей параметров, необходимо сначала создать массив параметров, содержащий набор пар ключ-значение. Ключ — это имя параметра, а значение — это значение параметра.
Когда вам нужно вызвать функцию, вы используете объект Soapclient для ее вызова и передаете два параметра. Первый параметр — это имя функции, которую вы хотите вызвать, а второй параметр — это массив, содержащий параметры функции SOAP. Вызывающая функция вернет значение вызванной вами функции SOAP.
Чтобы запустить этот пример, просто введите URL-адрес мыльного клиента.php в своем веб-браузере. Вы получите аналогичный результат:
Если вы перевернете «Эта строка будет перевернута», вы получите «desrever eb lliw gnirts sihT». Если вы добавите 5 и 14, вы получите 19.