4 つのシンプルなアーキテクチャ手法と php、phpwebservice での Web サービス実装の例
1: PHP自体のSOAP
すべての Web サービスにはサーバーとクライアントが含まれます。
PHP 独自の SOAP を使用するには、まず拡張機能をインストールして有効にする必要があります。以下の具体的なコードをご覧ください
まず、これはサーバー側の実装です:
コードをコピーします コードは次のとおりです:
クラステスト
{
関数 show()
{
「要求したデータ!」を返します;
}
}
関数 getUserInfo($name)
{
'fbbin' を返します。
}
//インスタンス化パラメータのマニュアルでは、これは wsdl を使用しないため、wsdl を使用する場合、最初のパラメータは wsdl ファイルのアドレスになります。
$server = new SoapServer(null, array('uri' ='http://soap/','location'='http://localhost/test/server.php'));
$server->setClass('テスト');
//$server->addFunction('getUserInfo');
$サーバー->ハンドル();
?>
そしてクライアント
コードをコピーします
コードは次のとおりです:
$soap = new SoapClient(null, array('location'='http://localhost/test/server.php','uri' ='http://soap/'));
エコー $soap->show();
//取得: '要求したデータ '
//エコー $soap->getUserInfo('sss');
これは非常に単純な例にすぎませんでした。実際、多くの通信メカニズムはこのように実装されています。
//////////////////////////////////////////////// /// ///////////////////////////////
2: PHPRPC
まず、公式 Web サイト (http://www.phprpc.org/zh_CN/) にアクセスして、phprpc の最新バージョンをダウンロードします。解凍すると、次のようにファイル (サーバー ファイルとクライアント ファイル) が分割されます。 :
サーバーファイル:
コードをコピーします
コードは次のとおりです:
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)を作成し、クライアントAに新しいファイルを作成しますファイル (client.php) がクライアントとして機能し、それぞれのコードは次のとおりです:
サーバー側:
コードをコピーします
コードは次のとおりです:
include_once"phprpc_server.php" //phprpc ファイルをロードします
$server = 新しい PHPRPC_Server();
$server->add('getUser');
$server->setDebugMode(true);
$server->start();
関数 getUser( )
{
「要求したデータを返してください!」;
}
クライアント:
[コード]
include_once "phprpc_client.php";
$client = 新しい PHPRPC_Client('http://127.0.0.1/phpservice/phprpcserver/server.php');
$data = $client->getUser();
var_dump($data);
// リクエストしたデータを取得します
上記で wsdl について言及した後、それを生成する方法について説明します。
//////////////////////////////////////////////// /// ///////////////////////////////
3: オープンソースの NUSOAP
まず、オンラインにアクセスして nusoap の最新バージョンをダウンロードします。解凍後、このファイルをサーバーとクライアントにそれぞれ配置し、サーバーとクライアントにダウンロードします。クライアントは通信ファイルとしてserver.phpファイルとclient.phpファイルをそれぞれ作成します。
サーバーファイルは次のとおりです:
コードをコピーします
コードは次のとおりです:
ini_set("soap.wsdl_cache_enabled", 0);//キャッシュをオフにする
require_once("lib/nusoap.php"); //nusoap ファイルをロードします
$server = 新しいsoap_server
$server->configureWSDL('nusoasp');//サービス名を設定し、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 );
関数 getUserInfo($name, $email)
{
「要求したデータを返してください!」;
}
クライアントファイルは次のとおりです:
コードをコピーします
コードは次のとおりです:
require_once("lib/nusoap.php");
$client = 新しいsoapclient('http://localhost/phpservice/nusoapserver/server.php?wsdl');
$pagram = array('fbbin', 'fbbin@foxmail.com');
$string = $client->call('getUserInfo', $pagram);
// リクエストしたデータを取得します
////////////////////////////////////////////// /// ///////////////////////////////
4: HessianPHP
実際、個人的には hessian は Web サービスではないと考えており、似ているとしか言えません。 Webサービスとしての特徴がないからです。多くの言語をサポートしています。今必要なのは、HessianPHP の PHP バージョンをダウンロードすることだけです。解凍後、使用する必要があるコア フォルダーである src ディレクトリが得られます。
これを HessianPHP に名前変更し、サーバーとクライアントにそれぞれ配置し、server.php と client.php ファイルをそれぞれ作成しました。
サーバー側:
コードをコピーします
コードは次のとおりです:
include_once 'HessianPHP/HessianService.php';// コアファイルをロードします
クラス TestService
{
パブリック関数 __construct()
{
}
パブリック関数 add($uma, $numb)
{
return $uma + $numb;
}
パブリック関数 check()
{
return 'fbbiin@gmail.com';
}
}
$test = 新しい TestService();
$hessian = new HessianService( $test, array('displayInfo' => true) );
$hessian->handle();//これはオンライン $hessian->service() ではないことに注意してください。バージョンが異なる可能性があります。変更してください。ソースコードを読んで初めて知りました!
?>
クライアント:
コードをコピーします
コードは次のとおりです:
include_once 'HessianPHP/HessianClient.php';
$url = "http://localhost/phpservice/hessianserver/server.php";
$options = 新しい HessianOptions();
$client = 新しい 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 を使用することです。この種のファイルは自分で作成できますが、一部の専門家には作成できないようです。そのため、wsdl を使用する必要があります。これを行うには、zend Studio ツールを使用して wsdl ファイルを生成します。
次に、図に示すように、新しい WSDL ファイルを作成できるように、WSDL ファイル ([ファイル]->[新規]->[その他]->[Web サービス]->[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!
http://www.bkjia.com/PHPjc/953151.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/953151.html技術記事 php での Web サービス実装の 4 つの単純なアーキテクチャ方法と例、phpwebservice 1: PHP 自体の SOAP すべての Web サービスにはサーバーとクライアントが含まれます。 使用するには...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31