くだらない SOAP 実装を構築するのにうんざりしていませんか?このパッケージは、PHP での一般的な SOAP 統合の問題を解決することを目的としています。その目標は、SOAP との統合を再び楽しくすることです。
このプロジェクトの将来についてさらに詳しい情報が必要ですか?私たちが取り組む予定の次の大きなプロジェクトのリストをご覧ください。
使用する HTTP クライアントを選択できます。このパッケージは、インストールするためにいくつかの PSR 実装が存在することを想定しています。
symfony/cache
またはcache/*-adapter
のようなpsr/cache-implementation
nyholm/psr7
またはguzzlehttp/psr7
のようなpsr/http-message-implementation
nyholm/psr7
またはguzzlehttp/psr7
のようなpsr/http-factory-implementation
symfony/http-client
またはguzzlehttp/guzzle
のようなpsr/http-client-implementation
例:
$ composer require symfony/http-client nyholm/psr7
$ composer require phpro/soap-client
ドキュメントを読むには時間が短すぎるため、すぐに SOAP サーバーと通信できるようにするスキャフォールディング ウィザードを追加しました。必要なのは次のことだけです。
./vendor/bin/soap-client wizard
次の章の手動インストール ページに基づいて、生成されたコードをカスタマイズできます。
これは、php-soap 上のクライアント実装です。より高度な設定については、php-soap パッケージ内のドキュメントを確認してください。
Rules
の指定Assemblers
介してコードを生成するデフォルトでは、SoapClient は配列、stdClasses、およびその他のスカラー型を組み合わせて動作します。これは、次の理由から、現代の OOP の世界では良い習慣ではありません。
上記の問題を解決するために、このパッケージはリクエストとレスポンスに値オブジェクトを使用することを強制します。これらの値オブジェクトを維持するのは大変な作業になる可能性があることを私たちは知っています。心配ない!開始時に適切なベースを生成するのに役立つコマンドライン ツールがいくつかあります。 SoapClient は PHP クラスへの WSDL のクラスマップを必要とするため、クラスマップ ジェネレーターも使用できます。これできっと時間を大幅に節約できるでしょう! SOAP 型コンバータを追加すると、特定の SOAP 型の値を PHP 型に変換したり、PHP 型に変換したりすることができます。パッケージには、日付と日時の基本的なトランスフォーマーがいくつか含まれています。その上、独自のトランスを作成するのは非常に簡単です。
もう 1 つの問題は、ネイティブ SoapClient が多くのマジック メソッドで動作することです。これらの魔法のメソッドをデバッグするのは難しいため、コード補完はありません。 SOAP メソッドと実装メソッドは両方とも同じオブジェクト上にあります。
このパッケージを使用すると、SoapClient を独自のクライアントにラップすることが強制されます。必要なメソッドのみを公開することを選択できます。開発者にとって、クライアントに何が含まれているのか、それがどのように機能し、何を返すのかが常に明確になります。デバッグ、認証、イベント システムに一般的に使用されるいくつかのメソッドで使用できるベース クライアントも提供しました。
多くの SOAP 統合では、ロギング、キャッシュ、および SOAP 呼び出しが同じメソッド内にあります。これにより、コードが読みにくくなり、他のクラス/パッケージに依存するようになります。
優れた OO SOAP クライアントを作成するには、大量のコードを作成する必要があります。これは面倒な作業ですが、自動化できます。そのため、WSDL 内の XSD スキームから SOAP オブジェクトを自動的に生成するツールを追加しました。独自のコード生成ルールやコード アセンブラを指定したり、多数の組み込みクラスの 1 つを使用したりすることも可能です。
コードをクリーンに保つことが重要です。したがって、Soap クライアントにイベント リスナーを追加しました。 SOAP フローの重要なステップごとに接続できます。このようにして、イベント サブスクライバーによるログ記録、検証、およびエラー処理を追加することができます。かなりクールですよね?
SOAP 拡張機能の実装は非常に面倒です。組み込み SOAP クライアントのコア メソッドを強制的に上書きします。 WSA または WSSE を SOAP に実装しなければならなかったことがあれば、コアに何か問題があることがわかるでしょう。したがって、SOAP クライアントを簡単に拡張できるようにしました。 Guzzle などのどのデータ転送ハンドラーを使用するかを指定できます。選択したハンドラーに応じて、SOAP 拡張機能のサポートや、HTTP ミドルウェアを介した高度な認証を簡単に追加できます。
ext-soap の処理はすべての開発者に適しているわけではありません。知っておく必要がある厄介な癖がいくつかあります。したがって、使いたいドライバーを使用できるようにしました。デフォルトでは、引き続き ext-soap ドライバーが出荷されますが、これは完全にオプトインです。独自のドライバー インターフェイスでラップすれば、ユーザーランドの SoapClient 実装を使用できます。
Web サービスのテストは難しいです。このパッケージは、SOAP サービスをテストするさまざまな方法を提供します。トランスポートは HTTP ベースであるため、 php-vcr
実装を使用できます。実際の HTTP 呼び出しを実行したくない場合は、テスト ケースでカスタムのTransport
またはCaller
を使用することもできます。 SOAP クライアントのテストは非常に高速で、統合のサードパーティ側でエラーは発生しません。
最後になりましたが、SoapClient を簡単に構成できるようにしたいと考えています。そのため、カスタム クライアントを構成できる、生成された ClientFactory が含まれています。開発中および運用中に他の設定が必要ですか?問題ない!落ち着いて、クライアントの初期化をファクトリに任せてください。