1、Zend_XmlRpc介紹
1. Zend_XmlRpc_Server:
Zend_XmlRpc_Server 依照 ? www.xmlrpc.com 上的規格描寫 實現了1個全功能 XML-RPC 服務器。同時,它還實現了允許批量傳輸(boxcarring)的 system.multicall() 方法。
個人理解,Zend_XmlRpc_Server可以在PHP程序中輕松實現webservice接口的功能,所有對外部的接口都可以在server文件中定義(只添加對外開發的接口),保證接口的安全性和程序的安全性。
2. Zend_XmlRpc_Client:
XML-RPC 服務的功能。主要功能包括在 PHP 和 XML-RPC 之間進行類型的自動轉換, 服務代理對象(a server proxy object),和訪問服務器的自省功能 (introspection capabilities)。
個人理解,就是在其他PHP程序中使用之前程序定義的Zend_XmlRpc_Server里的接口時使用,可以輕松調用Zend_XmlRpc_Server里定義的接口。
2、Zend_XmlRpc使用
首先我們得創建1個sever類,名字自定義。比如:我現在在我的項目zend_fraemwork創建1個Myserver.php文件,如圖:
這個Myserver.php文件的位置隨意你放,只要是在application下(1般我會創建1個webservice文件夾,上圖為測試,所以隨意放的)。
Myserver.php文件代碼以下:
<?php require_once 'Zend/XmlRpc/Server.php'; require_once APPLICATION_PATH.'commonsendMail.php';//先引入項目下的1個要開發出來的接口類
$server = new Zend_XmlRpc_Server(); $server->setClass('sendMail','test');//創建1個命名空間為test,然后把sendMail.php的sendMail全部類放入Zend_XmlRpc_Server作為對外的接口 echo $server->handle();//輸出處理要求結果 |
這樣就把全部sendMail.php 類都加入到了Zend_XmlRpc_Server中,也就是意味著,只要我在其他程序里用Zend_XmlRpc_Client創建對應客戶端實例,就能夠用這個實例訪問sendMail.php類里的所有方法。$server不但可以setClass,還可以addFunction,也就是只加入類里的某個方法。
看到這里,大家肯定迫不及待想要看看到底如何如其他程序去使用Zend_XmlRpc_Client來調用sendMail.php里的方法了,好的,先看看如何調用吧。
我新建1個項目名稱為:zend_fraemwork1,然后在default模塊下的IndexController里試試用Zend_XmlRpc_Client來調用了,結構如圖:
從圖中可以看到,該項目下的common文件夾下根本沒有sendMail.php文件。且看我如何調用這個郵件發送類的發送方法。代碼以下:
$title="測試"; $body='<h1>這是1封來自MarkTao的測試PHP郵件發送郵件!</h1><a href="#">請確認</a>'; $address = 'xxx@qq.com'; try{ $client = newZend_XmlRpc_Client('http://192.168.1.104/zend_fraemwork/public/common/Myserver.php'); //這是我本機的IP:192.168.1.104,兩個項目都在本機的站點下。根據url實例化Zend_XmlRpc_Client對象。 $test = $client->getProxy('test');// $test->__call(send, array($title, $body, $address));//調用__call方法調用sendMail.php類里的send方法,發送郵件。array是用來傳遞參數用的。 }catch (Zend_XmlRpc_Client_HttpException $ee){ $ee->getMessage(); } |
這樣,我們就成功的在項目zend_fraemwork1中調用了zend_fraemwork里的sendMail.php類里的send方法,實現了郵件發送功能。
3、總結
總結1下:首先,我們得保證兩個項目直接是可以通訊的,也就是說網絡是通的;其次,我們得創建好提供外部統1訪問的類,如上述的Myserver.php;然后我們的在該類中通過Zend_XmlRpc_Server對象把需要的類或方法set或add進去,這樣在其他項目里就可以隨時使用Zend_XmlRpc_Client對象進行訪問了。
特別注意的是:在Myserver.php類里必須引入:
require_once 'Zend/XmlRpc/Server.php';
而在使用Zend_XmlRpc_Client對象的類里也必須使用:
require_once 'Zend/XmlRpc/Client.php';
最后,國際慣例,歡迎拍磚!
下一篇 JSP表單驗證實例