"echo"というSOAPを介して関数を提供する必要があります。エコーはすでにPHPによって再調査されているので、私はこれを行う方法を知らない。何か方法はありますか?PHP: "echo"というSOAPメソッドを提供する
私はrename_functionまたはoverride_functionを使用できません。 Pecl-Apdはシステムで利用できません。ここで
は、いくつかのコード-ものです:
PHP:
$soap_server = new SoapServer('service.wsdl');
$soap_server->setClass('TestClass');
$soap_server->handle();
service.wsdlから:
<message name="echo">
<part name="parameters" element="tns:echo"/>
</message>
[...]
<portType name="MyService">
[...]
<operation name="echo">
<input message="tns:echo"/>
<output message="tns:echoResponse"/>
</operation>
[...]
</portType>
<binding name="MyServicePortBinding" type="tns:MyService">
[...]
<operation name="echo">
<soap:operation soapAction="urn:ping"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
[...]
</binding>
SOAP-Clientは、私のコントロール下にありません。 wsdl-fileを実装する必要があります。しかし、私のクラスでは常に "echo"は "ping"と呼ばれず、エラーメッセージPHP Fatal error: Function 'echo' doesn't exist in <file-path-and-name>
が返されます。
私のTestClassを、次のようになります。
<?php
ini_set("soap.wsdl_cache_enabled", "0");
class TestClass {
public function __construct()
{
}
[...]
public function ping($inputString)
{
return $inputString;
}
}
?>
あなたはにいくつかの背景を与えることができます質問 - これは研究の宿題ですか? PHPコア関数を再定義するのではなく、 'echo'というSOAPメソッドがほしいと思っていますか? :) – halfer
@halfer FYI私のアプローチがとにかく働いていなかったので私の答えを削除しました:(あなたも正しいかもしれませんが、私は間違った質問を解釈しているかもしれませんが) – DaveRandom
@halfer yes申し訳ありません、 – virusbrain