Я использую эту библиотеку https://github.com/phpro/soap-client, она прекрасно работает для меня, но я не могу понять, как мне сделать массив параметров, передаваемых в запрос.
<xsd:complexType name="docTypeRef_PackagesType">
<xsd:sequence maxOccurs="999">
<xsd:element name="RequestedPackages" type="tns:docTypeRef_RequestedPackagesType"/>
</xsd:sequence>
</xsd:complexType>
Это должно отправить запрос ниже с массивом RequestedPackages
<Packages>
<RequestedPackages number="1">
<Weight>2</Weight>
<Dimensions>
<!--You may enter the following 3 items in any order-->
<Length>1</Length>
<Width>1</Width>
<Height>1</Height>
</Dimensions>
</RequestedPackages>
<RequestedPackages number="2">
<Weight>1</Weight>
<Dimensions>
<!--You may enter the following 3 items in any order-->
<Length>2</Length>
<Width>2</Width>
<Height>2</Height>
</Dimensions>
</RequestedPackages>
</Packages>
У кого-нибудь есть идеи, как заставить это работать? Я уже создал массив запрашиваемых пакетов, но он не работает.
use IteratorAggregate;
class DocTypeRefPackagesType implements IteratorAggregate
{
private $RequestedPackages;
public function getIterator(): array
{
return new \ArrayIterator(is_array($this->RequestedPackages) ? $this->RequestedPackages : []);
}
public function getRequestedPackages(): array
{
return $this->RequestedPackages;
}
}
php параметр запроса:
$requestedPackages = [];
$dimension = (new DocTypeRefDimensionsType)
->withLength(1)
->withWidth(1)
->withHeight(1);
$requestedPackages[] = (new DocTypeRefRequestedPackagesType)
->withWeight(2)
->withDimensions($dimension)
->withNumber(1);
$packages = (new DocTypeRefPackagesType)
->withRequestedPackages($requestedPackages);
$dimension = (new DocTypeRefDimensionsType)
->withLength(2)
->withWidth(2)
->withHeight(2);
$requestedPackages[] = (new DocTypeRefRequestedPackagesType)
->withWeight(1)
->withDimensions($dimension)
->withNumber(2);
$packages = (new DocTypeRefPackagesType)
->withRequestedPackages($requestedPackages);
Я также пробовал TypeConverter, но запрос становится пустым тегом
<Packages>
<RequestedPackages/>
</Packages>