この記事では、主に 4 つの単純なアーキテクチャ手法と PHP での Web サービス実装の例を紹介します。必要な方は次を参照してください。
1: PHP 独自の SOAP
すべての Web サービスには、サーバー (サーバー) とクライアント(クライアント)。
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(); ?>
次に、クライアントです。
$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
まず、公式 Web サイト (http://www.phprpc.org/zh_CN/) にアクセスし、phprpc の最新バージョンをダウンロードします。解凍すると、次のようにファイルが分割されます。
サーバー ファイル:
dhparams dhparams.php phprpc_server.php bigint.php compat.php phprpc_date.php xxtea.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 について説明した後、それを生成する方法について説明します。
///////////////////////////////////////////// //// ///////////////////////////////////
3: オープンソースNUSOAP
まずオンラインにします 最新バージョンの nusoap をダウンロードします。解凍後、このファイルをサーバーとクライアントにそれぞれ配置し、サーバー上に別々に作成します。 server.php ファイルと client.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!'; }
クライアント ファイルは次のとおりです:
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 実際、個人的には Web サービスではなく、似ているとしか言えないと思います。 Webサービスとしての特徴がないからです。多くの言語をサポートしています。ここで必要なのは、HessianPHP の php バージョンをダウンロードすることだけです。解凍後、使用する必要があるコア フォルダーである src ディレクトリが得られます。
名前を HessianPHP に変更し、サーバーとクライアントにそれぞれ配置し、server.php と client.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 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 ファイルを生成します。
次に、WSDL ファイルを生成します ([ファイル] -> [新規] -> [その他] -> [Web サービス] -> [WSDL])。これにより、図に示すように、新しい WSDL ファイルを作成できるようになります。
次に、zeng Studio が提供する視覚的な操作を変更します。もちろん、得意な方はファイルのコードを変更することもできますが、それを理解していればそれほど難しいことではありません。
この手順を完了すると、基本的に 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 中国語 Web サイトをご覧ください。
関連する推奨事項:
exec、system、およびその他の関数を使用して php でシステム コマンドを呼び出すことについて
以上がPHPでのWebサービス実装の簡単なアーキテクチャについての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。