PHP 入門: SOAP 拡張機能

WBOY
WBOYオリジナル
2023-05-20 10:31:351793ブラウズ

人気のあるサーバーサイド プログラミング言語として、PHP はさまざまなニーズを満たす豊富な拡張機能を提供します。その中で、SOAP 拡張機能は Web サービスを作成および使用するためのツールであり、開発者はこれを使用して PHP でクロスプラットフォームのデータ送信を実装できます。 SOAP 拡張機能の使用方法を学びたい場合は、この入門ガイドが最適です。

1. SOAP の簡単な説明

SOAP は、分散環境での通信に使用される XML ベースのプロトコルです。 SOAP プロトコルは、ネットワーク上で複雑なデータ構造を送信できる標準メッセージ形式を定義します。実際、SOAP プロトコルは、HTTP や SMTP などのトランスポート プロトコルを介して XML 形式でデータを送信する方法を定義する仕様です。

SOAP プロトコルを使用して Web サービスを作成できます。これは、他のアプリケーションによる呼び出しのためのいくつかのメソッドを公開するだけです。 SOAP プロトコルは、メソッド呼び出し情報を XML 形式のドキュメントにカプセル化し、HTTP プロトコルを通じてサーバーに送信します。サーバーはリクエストを受け入れ、応答を返します。最後に、クライアントは応答を受信した後、XML ドキュメントを解析して取得します。結果。

2. SOAP 拡張機能

PHP では、SOAP 拡張機能は、Web サービスを簡単に作成して使用できるいくつかのクラスと関数を提供します。 SOAP 拡張機能を使用する場合は、最初に拡張機能をロードする必要があります。php.ini ファイルにコード

extension=php_soap.dll

を追加するか、関数 dl("php_soap.dll"); を使用します。 拡張機能を動的にロードします。

3. SOAP サーバーの作成

SOAP 拡張機能を使用して SOAP サーバーを作成するのは非常に簡単です。サーバー内でいくつかのインターフェイスを定義し、標準の WSDL ファイルを使用してインターフェイスを公開する必要があります。外部の世界に接続し、これらのインターフェイスを実装します。

次は、SOAP サーバーを作成し、単純なメソッドを公開する方法を示す簡単な例です。

class MyService {
    /**
     * @param int $a
     * @param int $b
     * @return int
     */
    public function add($a, $b)
    {
        return $a + $b;
    }
}

$options = array(
    'uri' => 'http://localhost/mySoapServer/',
    'location' => 'http://localhost/mySoapServer/'
);
$server = new SoapServer(null, $options);
$server->setClass('MyService');
$server->handle();

上記のコードは、MyService クラスを作成します。このクラスは、 add 2 つの整数の合計を計算するメソッド。次に、SoapServer クラスを使用して SOAP サーバーを作成し、setClass メソッドを通じて MyService クラスを外部に公開します。最後に、handle メソッドを呼び出して SOAP サーバーを実行します。

4. SOAP クライアントの使用

SOAP サーバーの作成はこの記事の主な内容ではありません。以下では、SOAP クライアントを使用して SOAP が提供するメソッドを呼び出す方法に焦点を当てます。サーバ。

SOAP クライアントの使用は非常に簡単で、次のコードによって実現できます。

$options = array(
    'uri' => 'http://localhost/mySoapServer/',
    'location' => 'http://localhost/mySoapServer/',
    'style' => SOAP_DOCUMENT,
    'use' => SOAP_LITERAL,
    'exceptions' => true,
);
$client = new SoapClient(null, $options);
$result = $client->__soapCall('add', array('a' => 1, 'b' => 2));
echo $result; //输出3

上記のコードは、SoapClient オブジェクトを作成し、__soapCall# を使用します。 # #このメソッドはサーバーの add メソッドを呼び出し、2 つのパラメーターを渡します。最後に結果を出力します。

SoapClient オブジェクトを作成するときは、いくつかのオプションを渡す必要があります。これらのオプションは、SOAP プロトコルのいくつかの特性を指定するために使用されます。ここでは、SOAP_DOCUMENT SOAP_LITERALメッセージ形式とパラメータ形式を指定する 2 つのオプション。詳細についてはマニュアルを参照してください。 __soapCall メソッドの最初のパラメーターは呼び出されるメソッドの名前であり、2 番目のパラメーターは渡されるパラメーター (連想配列) であることに注意してください。

5. SOAP エラー処理

SOAP サーバーまたはクライアントでエラーが発生すると、例外がスローされます。 try-catch ブロックを使用して例外をキャッチし、それに応じて処理できます。

以下はサンプル コードです:

try {
    $result = $client->__soapCall('add', array('a' => 1, 'b' => 'not a number'));
    echo $result;
} catch (SoapFault $e) {
    echo "SOAP Fault: {$e->faultstring}";
} catch (Exception $e) {
    echo "Exception: {$e->getMessage()}";
}

上の例では、数値以外のパラメータを意図的にサーバーに渡しており、サーバーは SOAP フォールト例外をスローします。 catch ブロックでは、まず SOAP フォールト例外かどうかを判断し、そうであれば例外情報の

faultstring 属性を出力します。それ以外の場合は、通常例外のgetMessage()メソッドの戻り値が出力されます。

6. 概要

これまで、SOAP プロトコルの基本概念と、SOAP 拡張機能を使用して SOAP サーバーとクライアントを作成する方法を紹介しました。 SOAP 拡張機能について詳しく知りたい場合は、PHP 公式ドキュメントの関連コンテンツを参照してください。

以上がPHP 入門: SOAP 拡張機能の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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