Мне нужно создать переменную абстрактного типа, чтобы передать ее в функцию SOAP.
Я успешно вызвал функцию с помощью WebServiceStudio, но не смог ее создать с помощью PHP.XML, созданный вызовом WebServiceStudio, выглядит так:
<PositionSelection>
<Drivers />
<Vehicles />
<Trailers />
<DataSource>OBC</DataSource>
<DateStrategySelection xsi:type="ChangedAfter">
<Since>0001-01-01T00:00:00</Since>
</DateStrategySelection>
<IncludeCodriverInfo>false</IncludeCodriverInfo>
<ExcludeActivities xsi:nil="true" />
</PositionSelection>
Я делаю разные вещи, но безрезультатно.Моя последняя (глупая) попытка выглядит так:
$sel = new stdClass();
$sel->DataSource = 'OBC';
$sel->IncludeCodriverInfo = true;
$sel->DateStrategySelection = "xsi:type=ChangedAfter";
$sel->DateStrategySelection->Since = $startDate;
$this->customer->wsdlData->PositionSelection = $sel;
Полученный XML-код этой конструкции:
<ns1:PositionSelection>
<ns1:DataSource>OBC</ns1:DataSource>
<ns1:DateStrategySelection/>
<ns1:IncludeCodriverInfo>true</ns1:IncludeCodriverInfo>
<ns1:ExcludeActivities xsi:nil="true"/>
</ns1:PositionSelection>
Как видите, здесь отсутствует DateStrategySelection, и в результате появляется сообщение об ошибке.is: 'Серверу не удалось прочитать запрос.---> В документе XML есть ошибка (2, 622).---> Указанный тип является абстрактным: name = 'DateStrategySelection', namespace = 'http://transics.org', at http://transics.org'>.'
Как я могу создать эту вещь xsi: type?