我正在用PHP的SoapServer类构建一个web服务。使用classmap特性可以很好地工作,并且WSDL类型被正确地映射到PHP类型。然而,我不知道映射类的实例是如何创建的。
是否有任何方法可以影响SoapServer生成的对象的创建?例如__set_state魔术方法。
示例:我分别使用xsd-tytes日期和日期时间。我想确保这些被转换成PHP的DateTime类。我不想做的是有一个下游流程来做这件事。
据我所知,正确的方法是SoapServer的typemap选项。例如,
$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 ) {}
}