四种php中webservice实现的简单架构方法及实例
《:四种php中webservice实现的简单架构方法及实例》要点: 一:PHP本身的SOAP
代码如下:
<?php?? class test?? {?? ??? function show()?? ??? {?? ??????? return 'the data you request!';?? ??? }?? }?? function getUserInfo($name)?? {?? ??? return 'fbbin';?? }?? //实例化的参数手册上面有,这个是没有使用wsdl的,所以第一个参数为null,如果有使用wsdl,那么第一个参数就是这个wsdl文件的地址.?? $server = new SoapServer(null,array('uri' ='http://soap/','location'='http://localhost/test/server.php'));?? $server->setClass('test');?? //$server->addFunction('getUserInfo');?? $server->handle();?? ?>? 然后是客户端PHP实战
代码如下:
$soap = new SoapClient(null,array('location'='http://localhost/test/server.php','uri' ='http://soap/'));???? echo $soap->show();?? //得到:'the data you request!'?? //echo $soap->getUserInfo('sss');? 就这么简单,当时这只是一个很简单的例子,其实很多的通信机制都是这么去实现的! 二:PHPRPC
代码如下:
dhparams?? dhparams.php?? phprpc_server.php?? bigint.php?? compat.php?? phprpc_date.php?? xxtea.php? 客户端文件:PHP实战
代码如下:
phprpc_client.php?? bigint.php?? compat.php?? phprpc_date.php?? xxtea.php? 我们把服务端文件放在服务端文件夹中,然后把客户端文件放在客户端文件夹中,之后再服务端文件夹中新建个文件(server.php)作为服务,然后再客户端新建个文件(client.php)作为客户端,各自代码如下:
代码如下:
<?php?? include_once"phprpc_server.php"; //加载phprpc文件?? $server = new PHPRPC_Server();?? $server->add('getUser');?? $server->setDebugMode(true);?? $server->start();?? function getUser( )?? {?? ??? return ‘the data you request!';?? }?? ? client端:?? [code]?? <?php?? include_once "phprpc_client.php";?? $client = new PHPRPC_Client('http://127.0.0.1/phpservice/phprpcserver/server.php');?? $data = $client->getUser();?? var_dump($data);?? //得到:the data you request!? 这上面提到wsdl之后会讲到如何生成. 三:开源的NUSOAP
代码如下:
<?php?? ini_set("soap.wsdl_cache_enabled",0);//关闭缓存?? require_once("lib/nusoap.php"); //加载nusoap文件?? $server = new soap_server;?? $server->configureWSDL('nusoasp');//设定服务的名称,使用的wsdl来通信,如果不适用wsdl将会更简单,网上有很多的例子?? $server->register('getUserInfo',array('name'="xsd:string",'email'="xsd:string"),array('return'="xsd:string"));?? $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';?? $server->service( $HTTP_RAW_POST_DATA );?? function getUserInfo($name,$email)?? {?? ??? return ‘the data you request!';?? }? 客户端文件如下:PHP实战
代码如下:
require_once("lib/nusoap.php");?? $client = new soapclient('http://localhost/phpservice/nusoapserver/server.php?wsdl');?? $pagram = array('fbbin','fbbin@foxmail.com');?? $string = $client->call('getUserInfo',$pagram);?? //得到:the data you request!? ///////////////////////////////////////////////////////////////////////////////PHP实战 四:HessianPHP
代码如下:
<?php?? include_once 'HessianPHP/HessianService.php';//加载核心文件?? class TestService?? {?? ??? public function __construct()?? ??? {?? ? ??? }?? ? ??? public function add($numa,$numb)?? ??? {?? ??????? return $numa + $numb;?? ??? }?? ? ??? public function check()?? ??? {?? ??????? return 'fbbiin@gmail.com';?? ??? }?? }?? $test = new TestService();?? $hessian = new HessianService( $test,array('displayInfo' => true) );?? $hessian->handle();//注意这里不是网上的$hessian->service(),可能是版本不一样,改了吧!我也是看了源码才知道!?? ?>? client 端:PHP实战
代码如下:
<?php?? include_once 'HessianPHP/HessianClient.php';?? $url = "http://localhost/phpservice/hessianserver/server.php";?? $options = new HessianOptions();?? $client = new HessianClient( $url,$options );?? $num = $client->add( 3,5 );?? echo $num;//得到:8;?? echo $client->check();//得到:fbbiin@gmail.com;? 以上四种方式为web开发过程中常用到的webservice通信方式.用的最多的是nusoap,个人感觉phprpc其实也不错,这个在性能上面和nusoap基本上差不多,只不过,phprpc在商业上是收费的.还有个hessianPHP好像是用java的,采用的二进制方式传输数据流,其实也是各有千秋啊.更多的详细资料去找百度和谷歌吧.
欢迎参与《:四种php中webservice实现的简单架构方法及实例》讨论,分享您的想法,编程之家 52php.cn为您提供专业教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |