-1

SoapClient オブジェクトを使用するクラスを作成し、コンストラクターで Web サービスの URL と、メソッドと応答の間の関連付けを受け取ります。

これで、メソッドとそのパラメーターのみを受け取る呼び出し関数ができました!

しかし、もう少し一般化したいと思います!

メソッドを関数として登録して直接呼び出すことができるように、メソッドをコンストラクターに渡したい!

これが C で行われているのを見たことがありますが、PHP で作成できると信じています。

誰でも私にヒントを与えることができますか?

Waleed Khan の助けを借りて、さらに調査を行った結果、その方法がわかりました。

私のクラスを使用するファイルで、これを使用します

$webs=new WebserviceCLS('webserviceIP',array("GetData"=>"GetDataResult"),array("GetData"));

$webs->metodo['GetData']($webs,array ("idData" => "98745684"));

そして、私が使用するクラスのコンストラクターで

foreach($met as $v)
{
    $eu = $this;
    $this->metodo[$v]= function($param) use($v,$eu)
    {
        $eu->call($v,$param);
    };
}

このようにして、コンストラクターは Web サービスのメソッド リストを取得し、Web サービスの汎用ハンドラーを呼び出す匿名関数を作成します。その呼び出しを行うには、クラスを指す変数 $eu を使用し、匿名関数で使用されます

4

2 に答える 2

0

Waleed Khan からのヒントのおかげで、私はほぼ完全に解決された私の質問に対する答えを追求し続けることができました!

私は無名関数に追加のパラメーターを持っていて、それで問題を解決しました!

私のコードは今これです:

$webs=new WebserviceCLS('http://94.46.227.3/alidata/service.asmx?    WSDL',array("GetCliente"=>"GetClienteResult"),array("GetCliente"));

$webs->metodo['GetCliente']($webs,array ("idCliente" => "98745684"));

消費者側で!

この:

foreach($met as $v)
{
    $this->metodo[$v]= function($obj,$param) use($v);
    {
        $obj->call($v,$param);
    };
}

Webサービスクラスで!

私の次のステップは、これをシングルトンにして、余分な $obj パラメータを終了できるようにすることです

助けてくれてありがとう!

于 2013-10-04T03:16:07.113 に答える