PHPでのWebサービス実装の簡単なアーキテクチャについて

不言
リリース: 2023-04-01 16:54:01
オリジナル
1554 人が閲覧しました

この記事では、主に 4 つの単純なアーキテクチャ手法と PHP での Web サービス実装の例を紹介します。必要な方は次を参照してください。

1: PHP 独自の SOAP
すべての Web サービスには、サーバー (サーバー) とクライアント(クライアント)。
PHP 独自の SOAP を使用するには、まず拡張機能をインストールして有効にする必要があります。具体的なコードを見てみましょう。
まず、これはサーバー側の実装です。

<?php   
class test   
{   
    function show()   
    {   
        return &#39;the data you request!&#39;;   
    }   
}   
function getUserInfo($name)   
{   
    return &#39;fbbin&#39;;   
}   
//实例化的参数手册上面有,这个是没有使用wsdl的,所以第一个参数为null,如果有使用wsdl,那么第一个参数就是这个wsdl文件的地址。   
$server = new SoapServer(null, array(&#39;uri&#39; =&#39;http://soap/&#39;,&#39;location&#39;=&#39;http://localhost/test/server.php&#39;));   
$server->setClass(&#39;test&#39;);   
//$server->addFunction(&#39;getUserInfo&#39;);   
$server->handle();   
?>
ログイン後にコピー

次に、クライアントです。

$soap = new SoapClient(null, array(&#39;location&#39;=&#39;http://localhost/test/server.php&#39;,&#39;uri&#39; =&#39;http://soap/&#39;));     
echo $soap->show();   
//得到:&#39;the data you request!&#39;   
//echo $soap->getUserInfo(&#39;sss&#39;);
ログイン後にコピー

当時はとても単純でした。非常に単純な例ですが、実際には多くのコミュニケーションが行われました。これがこのメカニズムの実装方法です。
///////////////////////////////////////////// //// /////////////////////////////////

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(&#39;getUser&#39;);   
$server->setDebugMode(true);   
$server->start();   
function getUser( )   
{   
    return ‘the data you request!&#39;;   
}
ログイン後にコピー

clientサイド:

[code]   
<?php   
include_once "phprpc_client.php";   
$client = new PHPRPC_Client(&#39;http://127.0.0.1/phpservice/phprpcserver/server.php&#39;);   
$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(&#39;nusoasp&#39;);//设定服务的名称,使用的wsdl来通信,如果不适用wsdl将会更简单,网上有很多的例子   
$server->register(&#39;getUserInfo&#39;, array(&#39;name&#39;="xsd:string", &#39;email&#39;="xsd:string"), array(&#39;return&#39;="xsd:string"));   
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : &#39;&#39;;   
$server->service( $HTTP_RAW_POST_DATA );   
function getUserInfo($name, $email)   
{   
    return ‘the data you request!&#39;;   
}
ログイン後にコピー

クライアント ファイルは次のとおりです:

require_once("lib/nusoap.php");   
$client = new soapclient(&#39;http://localhost/phpservice/nusoapserver/server.php?wsdl&#39;);   
$pagram = array(&#39;fbbin&#39;, &#39;fbbin@foxmail.com&#39;);   
$string = $client->call(&#39;getUserInfo&#39;, $pagram);   
//得到:the data you request!
ログイン後にコピー

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

Four: HessianPHP
hessian 実際、個人的には Web サービスではなく、似ているとしか言えないと思います。 Webサービスとしての特徴がないからです。多くの言語をサポートしています。ここで必要なのは、HessianPHP の php バージョンをダウンロードすることだけです。解凍後、使用する必要があるコア フォルダーである src ディレクトリが得られます。
名前を HessianPHP に変更し、サーバーとクライアントにそれぞれ配置し、server.php と client.php ファイルをそれぞれ作成しました。
サーバー側:

<?php   
include_once &#39;HessianPHP/HessianService.php&#39;;//加载核心文件   
class TestService   
{   
    public function __construct()   
    {   
  
    }   
  
    public function add($numa, $numb)   
    {   
        return $numa + $numb;   
    }   
  
    public function check()   
    {   
        return &#39;fbbiin@gmail.com&#39;;   
    }   
}   
$test = new TestService();   
$hessian = new HessianService( $test, array(&#39;displayInfo&#39; => true) );   
$hessian->handle();//注意这里不是网上的$hessian->service(),可能是版本不一样,改了吧!我也是看了源码才知道!   
?>
ログイン後にコピー

クライアント側:

<?php   
include_once &#39;HessianPHP/HessianClient.php&#39;;   
$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 サイトをご覧ください。

関連する推奨事項:

php カスタム フォーマット時間について

exec、system、およびその他の関数を使用して php でシステム コマンドを呼び出すことについて

以上がPHPでのWebサービス実装の簡単なアーキテクチャについての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート