複数のクラス (サービス) へのリクエストを処理する単一の PHP SOAP サーバーを持つことは可能ですか?
はいの場合、実装例を示していただけますか?
そうでない場合は、その理由を説明していただけますか?
複数のクラス (サービス) へのリクエストを処理する単一の PHP SOAP サーバーを持つことは可能ですか?
はいの場合、実装例を示していただけますか?
そうでない場合は、その理由を説明していただけますか?
他のサービスを1つのクラスにまとめてもらえますか?完全にテストされていない、それはただの考えでした...
クラスMySoapService {{ パブリック関数__construct() {{ $ this-> _ service1 = new Service1(); $ this-> _ service2 = new Service2(); } //ここで__call()を使用して、すべての呼び出しを傍受することができます。 //したがって、ラッパークラスでのこれらの宣言の必要性を回避します。 パブリック関数add($ a、$ b) {{ $ this-> _ service1-> add($ a、$ b);を返します。 } パブリック関数sub($ a、$ b) {{ $ this-> _ service2-> sub($ a、$ b);を返します。 } } クラスService1 {{ パブリック関数add($ a、$ b) {{ $ a +$bを返します。 } } クラスService2 {{ パブリック関数sub($ a、$ b) {{ $a-$bを返します。 } }
同じ一般的な考え方(プロキシクラス)の別の見方-php5の場合ハッシュを使用して関数をコールバックにマップします。
class ServiceProxy {
private $map = array();
public function addMethod($name, $callback) {
if(is_callable($callback)) {
$this->map[$name] = $callback;
return true;
}
return false;
}
function __call($name, $args) {
if(isset($map[$name])) {
return call_user_func_array($map[$name], $args);
} else {
return null;
}
}
}
このクラスは、たとえば、リフレクションAPIを使用して、オブジェクトからすべてのpulicメソッドを追加することもできます。
両方のクラスに同じ名前のメソッド(ただしパラメーターが異なる)がある場合は、func_get_args()を使用して引数を分析し、その方法でメソッドを区別できます。
彼らが同じ議論をするなら...あなたはちょっと立ち往生しています。
2つの別々のWebサービスを使用できないのはなぜですか?