ホームページ  >  記事  >  php教程  >  非常に使いやすい xmlrpc-epi PHP カプセル化クラス (1)

非常に使いやすい xmlrpc-epi PHP カプセル化クラス (1)

WBOY
WBOYオリジナル
2016-06-21 09:05:411232ブラウズ

xml|パッケージ

PHP 自体には、xmlrpc-epi と呼ばれる、C 言語で実装された xmlrpc 拡張機能が付属しています。 C 言語で実装されているため、PHP で実装された xmlrpc 拡張機能よりもはるかに高速です。ただし、実際のアプリケーションでは、この拡張機能を使用している人は少なく、ほとんどが PHP スクリプトを使用して実装された xmlrpc 拡張機能であることがわかります。理由は 2 つ考えられます。 まず、この拡張機能はサーバー上で開く必要があるため、サーバー操作権限がない場合、この拡張機能を使用するのは現実的ではありません。 2 番目の理由は、この拡張機能は PHP マニュアルの説明が少なすぎ、提供されている機能が非常に基本的なため、使用するのが非常に面倒であることです。 2 番目の質問に答えて、私はこの拡張機能を 3 つのクラス (xmlrpc_error、xmlrpc_client、および xmlrpc_server) にカプセル化しました。もちろん、最も重要なのは後の 2 つのクラス、つまり xmlrpc_client と xmlrpc_server です。これら 2 つのクラスにより、xmlrpc クライアントとサーバーを作成する手順が大幅に簡素化されます。

次の例を使用すると、xmlrpc サーバーとクライアントを作成する手順がいかに簡単であるかを確認できます。

サーバー側コード
ダウンロード:server.php
require_once('class_xmlrpc.php');

function Add($method, $params) {
Return $params[0] + $ params [1];
}
function Sub($method, $params) {
return $params[0] - $params[1];
function Mul($method, $params) {
return $params[ 0 ] * $params[1];
function Div($method, $params) {
return $params[0] / $params[1]
}
$xmlrpc_server = new xmlrpc_server(); xmlrpc_server ->register_method("Math.add", "Add");
$xmlrpc_server->register_method("Math.sub", "Sub");
$xmlrpc_server->register_method("Math.Mul", " Mul");
$xmlrpc_server->register_method("Math.Div", "Div");
クライアント コード
ダウンロード: client.php
< ?php
require_once('class_xmlrpc.php');
$xmlrpc_client('server.php', 'Math');
$a = 100; a; $b = $b
";
echo '$a + $b = ' . $xmlrpc_client->add($a, $b) . '
';
echo '$a - $b = ' . $xmlrpc_client->sub($a, $b) .
echo '$a * $b = ' . ('Mul', $a, $b) . '
';
echo '$a / $b = ' .$xmlrpc_client->invoke('Math.Div', $a, $b ) . '
';
?> 上記のコードは非常に単純ですが、注意が必要な点がまだ 2 つあります。



まず、xmlrpc メソッドは呼び出しを簡略化するために、$xmlrpc_client を初期化するときに名前空間パラメータ「Math」を指定します。メソッド名を通じて直接呼び出すか、呼び出しを通じて呼び出す場合は、名前空間プレフィックスを省略できます。名前空間を変更したい場合は、$xmlrpc_client->namespace に値を割り当てるだけです。一時的な変更だけであれば、invoke メソッドを通じてフルネーム (つまり、名前空間を伴うメソッド名) で呼び出すこともできます。



第二に、xmlrpc と PHP5 のメソッドは大文字と小文字が区別されますが、PHP4 のメソッドは大文字と小文字が区別されません。また、PHP4 では、すべての関数名またはメソッド名が小文字で保存されるため、Sub に関係なく add かどうかは区別されません。または Sub の場合、呼び出されるメソッドはすべて小文字です。したがって、PHP5 では、定義内で大文字を含むメソッドを直接呼び出すことができますが、PHP4 ではそれができません。つまり、PHP4 でメソッド名を介して xmlrpc メソッドに直接アクセスしたい場合は、xmlrpc のメソッド名が小文字で定義されていることを確認する必要があります。そうしないと、対応するメソッドが見つからないというエラーが発生します。 PHP4 で、定義時に大文字が含まれる xmlrpc メソッドを呼び出したい場合はどうすればよいでしょうか?実際には、call メソッドを使用するだけです。最初のパラメータは、呼び出されるメソッド名の文字列です。この文字列は大文字と小文字が区別されます。 invoke メソッドを使用して呼び出すこともできます。違いは、名前空間がある場合は、それを明確に記述する必要があることです。

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