3

PHP の SoapServer クラスを使用して Web サービスを構築しています。classmap機能の使用は正常に機能し、WSDL 型は PHP 型に正しくマップされます。ただし、マップされたクラスのインスタンスがどのように作成されるかを理解できません。

SoapServer によって生成されたオブジェクトの作成を有効にする方法はありますか? たとえば、__set_state マジック メソッドのようなものです。

例: xsd tytes の date と datetime をそれぞれ使用しています。これらが PHP の DateTime クラスに確実に変換されるようにしたいと考えています。私がやりたくないのは、それを行う下流プロセスを持つことです。

4

1 に答える 1

1

As far as I know the proper way of doing that is the typemap option for SoapServer. Eg,

$options = array (
    'typemap' => array (
        array(
            'type_name' => 'XMLNodeForMyClass',
            'type_ns' => 'urn:localurn',
            'from_xml' => 'MyClass::fromSOAP',
            'to_xml' => 'MyClass::toSOAP'
        )
    )
);

class MyClass {
    static public function fromSOAP( string $xml ) {}
    static public function toSOAP( MyClass $Outgoing ) {}
}
于 2014-03-04T11:19:49.997 に答える