У меня была та же проблема с атрибутами, и я в итоге использовал XMLWriter, как прокомментировано в этом посте: http://eosrei.net/articles/2012/01/php-soap-xml-attributes-namespaces-xmlwriter
Построить петицию:
$prefix = 'ns1';
$xml = new \XMLWriter();
$xml->openMemory();
$xml->startElementNs($prefix, 'SomeRequest', null);
$xml->writeElementNs($prefix, 'SchemaVersion', null, "2.0");
$xml->startElementNs($prefix, 'SomeComplexType', null);
$xml->writeElementNs($prefix, 'MessageId', null, 11);
$xml->writeElementNs($prefix, 'Timestamp', null, '2013-07-05T14:43:43.649-04:00');
$xml->startElementNs($prefix, 'Authentication', null);
$xml->writeAttribute('SomeAttribute', '12312');
$xml->writeElementNs($prefix, 'UserId', null, 'myUser');
$xml->writeElementNs($prefix, 'Password', null, 'somePass');
$xml->endElement();
$xml->endElement();
$xml->endElement();
$request = new SoapVar($xml->outputMemory(), XSD_ANYXML);
$result = $this->call('submit', $request);
Результат:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://xml.somehost.com/XMLSchema/Connect">
<SOAP-ENV:Body>
<ns1:SomeRequest>
<ns1:SchemaVersion>2.0</ns1:SchemaVersion>
<ns1:SomeComplexType>
<ns1:MessageId>11</ns1:MessageId>
<ns1:Timestamp>2013-07-05T14:43:43.649-04:00</ns1:Timestamp>
<ns1:Authentication SomeAttribute='12312'>
<ns1:UserId>myUser</ns1:UserId>
<ns1:Password>somePass</ns1:Password>
</ns1:Authentication>
</ns1:SomeComplexType>
</ns1:SomeRequest>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>