例では、PHP を使用して Web サービス アーキテクチャを実装する 4 つの方法を紹介します。

WBOY
リリース: 2016-06-23 13:08:04
オリジナル
887 人が閲覧しました

私が知っている Web サービスには、PHP 独自の SOAP、オープンソースの NUSOAP、商用版の PHPRPC、バイナリ送信データ ストリームを使用する HessianPHP などがあります。これらの PHP の Web サービスを簡単に紹介します。この点に関する情報はインターネット上にありますが、これは私の個人的な実践であり、もちろんオンラインで見つけた情報をここにメモしておきます。

1: PHP 独自の SOAP

すべての Web サービスにはサーバーとクライアントが含まれます。

PHP 独自の SOAP を使用するには、まず拡張機能をインストールして有効にする必要があります。具体的なコードを見てみましょう

まず、これはサーバー側の実装です:

PHP コード

<?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');    
ログイン後にコピー

そのときは、とても簡単です。これは非常に単純な例にすぎません。実際、多くの通信メカニズムがこの方法で実装されています。

////////////////////////////////////////////// /// ////////////////////////////////

2: PHPRPC

まず公式ウェブサイトにアクセスします( http://www.phprpc .org/zh_CN/ ) を使用して phprpc の最新バージョンをダウンロードします。解凍後、ファイル (サーバー ファイルとクライアント ファイル) が次のように分割されます。

PHP コード

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    
ログイン後にコピー

サーバー ファイルをサーバー フォルダーに配置し、次にクライアント ファイルをクライアント フォルダーに配置し、サーバー フォルダー ファイルに新しいファイルを作成します

サーバー側:

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サイド:

PHP コード

<?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 について言及した後、それを生成する方法について説明します。

3: オープンソース NUSOAP

まず、インターネットにアクセスして、nusoap の最新バージョンをダウンロードします。解凍後、このファイルをサーバーとクライアントにそれぞれ配置します。 1 つのコピーを作成し、server.php ファイルと client.php ファイルをそれぞれ通信ファイルとしてサーバーとクライアントに作成します。

サーバー側のファイルは次のとおりです:

PHP コード

<?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!    
ログイン後にコピー

Four: HessianPHP

Hessianそれはありませんwebservice は、That's all に似ているとしか言えません。 Webサービスとしての特徴がないからです。多くの言語をサポートしています。ここで必要なのは、HessianPHP の php バージョンをダウンロードすることだけです。解凍後、使用する必要があるコア フォルダーである src ディレクトリが得られます。

HessianPHP に名前を変更してサーバーとクライアントにそれぞれ配置し、server.php と client.php ファイルをそれぞれ作成しました。

サーバー側:

PHP コード

<?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(),可能是版本不一样,改了吧!我也是看了源码才知道!     ?>    
ログイン後にコピー

クライアント側:

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;   
ログイン後にコピー

上記 4 つの方法は、Web 開発プロセスで一般的に使用される Web サービス通信方法です。最も一般的に使用されているのは nusoap ですが、個人的には phprpc は基本的に nusoap に似ていますが、有料です。また、Java を使用しているようで、バイナリ メソッドを使用してデータ ストリームを送信する hessianPHP もあります。実際、それぞれに独自の利点があります。さらに詳しい情報については、Baidu および Google をご覧ください。

以下はwsdlファイルの生成についてです。

Web サービスで通信するために最も一般的に使用され、比較的安全な方法は、wsdl を使用することです。この種のファイルは自分で作成できますが、一部の専門家が作成することは不可能であるようです。 zend Studio ツールを使用して wsdl ファイルを生成します。

次に、図に示すように、[ファイル]->[新規]->[その他]->[Web サービス]->[WSDL] で WSDL ファイルを生成します。これにより、新しい WSDL ファイルを作成できるようになります。

次に、zeng スタジオが提供する視覚的な操作を行います。もちろん、実際にはファイルのコードを変更するだけです。理解すれば、それほど難しいことではありません。

このステップを完了すると、WSDL ファイルは基本的に使用できるようになりますが、次の 2 つの問題に注意する必要があります:

このステップを実行した後、おそらくバインディングがないため、テストが失敗する可能性があります。場合によっては手動で行う必要があります。バインディングを右クリックして、[バインディング コンテンツの生成] を選択します (2 つの大きなボックスの中央にある小さなボックスです)。

2 番目に注意すべきことは、php の WSDL キャッシュです。テストを実行するときは、通常、WSDL キャッシュをオフにする必要があります。そうしないと、更新された WSDL ファイルの代わりに元の WSDL ファイルが使用される可能性があります。キャッシュをオフにする方法は 2 つあります。1 つは php.ini で直接soap.wsdl_cache_enabled = 0を設定する方法で、2 つ目はphpファイルにini_set("soap.wsdl_cache_enabled", "0")というステートメントを追加する方法です。 ;

これを実行した後、サーバー プログラムを安全にテストして呼び出すことができます。

以上です、OK!

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!