В моем проекте Symfony2 мне нужно сделать SOAP-вызов в WebService, поэтому я установил besimple/soap-client
с помощью композитора и настроил его следующим образом:
parameters.yml:
soap_options: wsdl: wsdl/test.wsdl
В services.xml
<!-- Soap Client -->
<service id="project.test.soap.wrapper"
class="Project\Test\Soap\SoapClientWrapper">
<argument key="soap_options">%soap_options%</argument>
</service>
Затем я ввел эту услугу в один из моих Dto/TestTemplate.php
Затем я создал каталог репозиториев в моем каталоге Soap, созданным besimple/soap-client
, в этом репозитории я добавил файл TestAttrebiutes.php:
namespace Project\Test\Soap\Repositories;
class TestAttributes {
public $agentID;
public $sourceChannel;
public $organisationName;
public function __construct(
$agentID,
$sourceChannel,
$organisationName,
){
$this->$agentID = $agentID;
$this->$sourceChannel = $sourceChannel;
$this->$organisationName = $organisationName;
}
}
Итак, теперь в моем TestTemplate.php я бы хотел сделать что-то вроде этого:
$this->soap->__call(new FttpStatusAttributes(
'100',
'Web',
'Ferrari'
), **ASKING FOR ATTRIBUTES);
но он просит меня добавить атрибуты сразу после того, как я их добавлю, что я делаю неправильно, это возможно сделать так, как я пытаюсь это сделать..?
Этот код может быть проблемой:
$this->$agentID = $agentID;
$this->$sourceChannel = $sourceChannel;
$this->$organisationName = $organisationName;
Когда вы $this->$agentID
к $this->$agentID
, вы получаете доступ к члену $this
который имеет значение $agentID
. Так, например, если $agentID
был, скажем, john123
, ваш код на самом деле означал бы
$this->john123 = 'john123';
Это явно не то, что вы хотите. Ваш код должен читать:
$this->agentID = $agentID;
$this->sourceChannel = $sourceChannel;
$this->organisationName = $organisationName;
Честно говоря, я не знаю, решает ли это проблему, так как ваш вопрос немного расплывчатый, но это определенно то, что вы хотите исправить.