許多機構已經采用了Apach和PHP作為他們的Web應用環境。在Web services模式中采用PHP可能看上去可能會比較難。但是事實上,搭配NuSoap,你可以輕松的應用PHP構建SOAP的客戶端和服務器端。
一個例子便能說明一切,讓我們先看一個例子
為了說明如何應用NuSoap和PHP來構建Web services,我們將舉一個簡單的例子。這個例子應用程序由一個PHP Web services的服務器端和客戶端組成。他將實現兩個功能:顛倒一個字符串字符的順序,求兩個數的和。
PHP SOAP服務器
用PHP和NuSoap來建立SOAP服務器非常容易。基本上,你只要寫出你想要暴露給你的Web services的函數,然後用NuSoap去注冊它們就可以了。
OK,另外還需要兩步才能完成PHP SOAP服務器的建立。首先你還要在你的PHP代碼中創建NuSoap對象的一個實例,然後用HTTP POST方法將原始數據傳給NuSoap進行處理。聽起來簡單吧。先看看清單1。
清單1:soapfunc.php
<?
require_once('nusoap.php');
function reverse($str){
$retval = "";
if(strlen($str) < 1) {
return new soap_fault('Client','','Invalid string');
}
for ($i = 1; $i <= strlen($str); $i++) {
$retval .= $str[(strlen($str) - $i)];
}
return $retval;
}
function add2numbers($num1, $num2) {
if (trim($num1) != intval($num1)) {
return new soap_fault('Client', '', 'The first number is invalid');
}
if (trim($num2) != intval($num2)) {
return new soap_fault('Client', '', 'The second number is invalid');
}
return ($num1 + $num2);
}
?>
清單1給出了soapfunc.php的源文件。這個文件包含了我們想通過SOAP協議暴露給Web services的兩個函數:reverse和add2numbers,它們是我們這個Web services 應用的核心。函數reverse帶一個參數,顛倒字符串中的字符的順序,然後返回。