PHP:Error fatal detectable:El objeto de clase stdClass no se pudo convertir en cadena [cerrado]
Pregunta
Recibo el siguiente volcado y error al ejecutar el código adjunto.Lo que me confunde es que $procID parece devolverse como una cadena, pero tan pronto como intento pasarlo nuevamente, ¿es un objeto?¿Cómo consigo que siga siendo una cuerda?Gracias.
object(stdClass)#2 (1) { ["processId"]=> string(13) "Genesis114001" } string(311) "Genesis114001" string(293) " Genesis " Catchable fatal error: Object of class stdClass could not be converted to string in C:\wamp\www\SugarCE\testSOAPShawn.php on line 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));
?>
Solución
Cualquiera que sea el $client->start()
El método regresa, se escribe como un objeto.Puede acceder a las propiedades del objeto utilizando el ->
operador:
$procID = $client->start(array("prefix"=>"Genesis"));
...
$exchange = $client->exchangeOptions(array("processId"=>$procID->processId));
Probablemente se trataba de una matriz, pero se está escribiendo en un objeto.Por lo tanto, terminas con el clase estándar.
Otra forma (y posiblemente mejor) de hacerlo es escribir la declaración.De esa manera, no es necesario crear una nueva matriz para pasarla luego como argumento:
$procID = (array) $client->start(array("prefix"=>"Genesis"));
...
$exchange = $client->exchangeOptions($procID);
$end = $client->stop($procID);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow