При запуске прилагаемого кода я получаю следующую дамп и ошибку. Я смущен тем, что $ procID представляется как строка, но как только я попытаюсь передать его снова, его объект? Как я могу получить / остаться в строке? Благодарю.
object (stdClass) # 2 (1) { ["processId"] => string (13) Строка "Genesis114001"} (311) Строка «Genesis114001» (293) «Бытие «Ловкая фатальная ошибка: объект Класс stdClass не может быть преобразован вставить в C: \ WAMP \ WWW \ SugarCE \ testSOAPShawn.php в строке 15
<?php set_time_limit(0); require_once('nusoap.php'); require_once('BenefitSOAP.php'); //WSDL to PHP Classes $client = new SoapClient('C:\wsdl\BenefitDeterminationProcess_BenefitDialogueServiceSOAP.wsdl', array('trace' => 1)); $procID = $client->start(array("prefix"=>"Genesis")); $respXML = $client->__getLastResponse(); $requXML = $client->__getLastRequest(); echo "<p/>"; var_dump($procID); //echo "<p/>"; var_dump($respXML); //echo "<p/>"; var_dump($requXML); $exchange = $client->exchangeOptions(array("processId"=>$procID)); //LINE 15 $end = $client->stop(array("processId"=>$procID)); ?>
Независимо от того, какой метод $client->start()
возвращается, он вводится как объект. Вы можете получить доступ к свойствам объекта с помощью оператора ->
:
$procID = $client->start(array("prefix"=>"Genesis")); ... $exchange = $client->exchangeOptions(array("processId"=>$procID->processId));
Вероятно, это массив, но набирается в объект. Таким образом, вы попадаете в stdClass .
Другой (и, возможно, лучший) способ сделать это – напечатать возврат. Таким образом, вам не нужно создавать новый массив для последующей передачи в качестве аргумента:
$procID = (array) $client->start(array("prefix"=>"Genesis")); ... $exchange = $client->exchangeOptions($procID); $end = $client->stop($procID);