ホームページ バックエンド開発 PHPチュートリアル PHPでのWebサービス実装の簡単なアーキテクチャについて

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

Jun 21, 2018 pm 03:04 PM
php webservice

この記事では、主に 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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

今まで知らなかったことを後悔している 7 つの PHP 関数 今まで知らなかったことを後悔している 7 つの PHP 関数 Nov 13, 2024 am 09:42 AM

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

母音を文字列にカウントするPHPプログラム 母音を文字列にカウントするPHPプログラム Feb 07, 2025 pm 12:12 PM

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? Apr 03, 2025 am 12:03 AM

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。

See all articles