4

複数のクラス (サービス) へのリクエストを処理する単一の PHP SOAP サーバーを持つことは可能ですか?

はいの場合、実装例を示していただけますか?

そうでない場合は、その理由を説明していただけますか?

4

3 に答える 3

2

他のサービスを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を返します。
  }
}
于 2008-12-05T15:36:21.580 に答える
0

同じ一般的な考え方(プロキシクラス)の別の見方-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メソッドを追加することもできます。

于 2008-12-06T18:26:56.553 に答える
0

両方のクラスに同じ名前のメソッド(ただしパラメーターが異なる)がある場合は、func_get_args()を使用して引数を分析し、その方法でメソッドを区別できます。

彼らが同じ議論をするなら...あなたはちょっと立ち往生しています。

2つの別々のWebサービスを使用できないのはなぜですか?

于 2008-12-08T14:46:57.043 に答える