利用PHP SOAP擴展實現簡單Web Services
WebServices能干什麼?
WebServices 可以將應用程序轉換為網絡應用程序。
通過使用 WebServices,您的應用程序可以向全世界發布信息,或提供某項功能。
好了,關於WebServices網上資料很多,就不過多介紹了,直接進入主題。
PHP有兩個擴展類庫可以實現WebServices,一個是NuSoap,一個是php官方自帶的Soap擴展,在使用上大致都差不多,就拿官方自帶的Soap擴展來說吧。
在Soap編寫WebServices中主要用到了SoapClient,SoapServer,SoapFault三個類。
SoapClient:用戶訪問的類,也就是客戶端,使用WebServices的類
SoapServer:提供WebServices類,服務端
SoapFault:異常處理類
作為示例,寫個超級簡單的的WebServices來感受下吧,直接代碼說話
1、Myself.class.php --業務邏輯類,功能實現類
復制代碼
1 <?php
2 //業務邏輯類
3 class Myself{
4 public function info(){
5 return "新浪微博:Balla_兔子,求關注啦~";
6 }
7 }
8 ?>
復制代碼
很簡單,無需多余解釋,返回一個字符串。
2、soapServer.php --服務端類,提供服務
復制代碼
1 <?php
2 //服務端
3 require_once('Myself.class.php');
4 $parameter=array(
5 'uri'=>'http://localhost/',
6 'location'=>'http://localhost/soap/soapServer.php'
7 );
8 $soapServer=new SoapServer(null,$parameter);
9 $soapServer->setClass('Myself');
10 $soapServer->handle();
11 ?>
復制代碼
SoapServer有兩種操作模式:
上面舉例的是non-WSDL模式,在實例化SoapServer類時,一個參數是放WSDL文件,在non-WSDL模式裡,可以為空,把配置參數以數組的形式寫在第二個參數。
如果用的是WSDL模式,可以直接用WSDL文件讓服務器讀取配置參數,此時可以省略第二個數組參數。
配置參數有許多,上面為簡單舉例只列出2個,具體大家可以在網上查查
uri --命名空間
location --服務地址
1、WSDL模式 在WSDL模式中,構造器可以使用WSDL文件名作為參數,並從WSDL中提取服務所使用的信息。
2、non-WSDL模式 在non-WSDL模式中,使用參數來傳遞要使用的信息,用來管理服務的行為。
在SoapServer類的眾多方法中,有三個方法比較重要。它們是SoapServer::setClass()、SoapServer::addFunction()、SoapServer::handle()。
特別注意,在handle方法之前之後均不能輸出任何參數,否則會出錯。
3、soapClient.php --客戶端類,使用服務
復制代碼
1 <?php
2 //客戶端
3 $parameter=array(
4 'uri'=>'http://localhost/',
5 'location'=>'http://localhost/soap/soapServer.php'
6 );
7 try{
8 $soapClient=new SoapClient(null,$parameter);
9 echo $soapClient->info();
10
11 }catch(Exception $e){
12 echo $e->getMessage();
13 }
14
15 ?>
復制代碼
SoapClient類可以作為給定WebServices的客戶端。