我正在使用 PHP 的 SoapServer 类构建一个 Web 服务。使用classmap功能可以正常工作,并且 WSDL 类型正确映射到 PHP 类型。但是,我无法弄清楚映射类的实例是如何创建的。
有什么方法可以影响 SoapServer 生成的对象的创建?例如像 __set_state 魔术方法。
示例:我分别使用 xsd 类型的日期和日期时间。我想确保将这些转换为 PHP 的 DateTime 类。我不想做的是有一个下游流程来做到这一点。
我正在使用 PHP 的 SoapServer 类构建一个 Web 服务。使用classmap功能可以正常工作,并且 WSDL 类型正确映射到 PHP 类型。但是,我无法弄清楚映射类的实例是如何创建的。
有什么方法可以影响 SoapServer 生成的对象的创建?例如像 __set_state 魔术方法。
示例:我分别使用 xsd 类型的日期和日期时间。我想确保将这些转换为 PHP 的 DateTime 类。我不想做的是有一个下游流程来做到这一点。
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 ) {}
}