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的客戶端。
它有兩種操作形式:(和SoapServer的兩種模式差不多)
1、WSDL 模式
2、Non-WSDL 模式
以上就是利用PHP SOAP擴充套件實現的簡單WebServices,我們訪問soapClient.php試試看
輕鬆搞定~
附:
現在大多的WebServices介面的返回值是JSON或XML,我們可以在內部自己定義賦值。
常用函式 file_get_contents、json_encode、json_decode等
這裡有篇關於json操作時該注意的事項:http://www.cnblogs.com/lichenwei/p/3888586.html