PHP :Erreur fatale capturable :L'objet de la classe stdClass n'a pas pu être converti en chaîne [fermé]
Question
J'obtiens le dump et l'erreur suivants lors de l'exécution du code ci-joint.Ce qui me dérange, c'est que $procID semble être renvoyé sous forme de chaîne, mais dès que j'essaie de le transmettre à nouveau, c'est un objet ?Comment puis-je faire en sorte qu'il soit/reste une chaîne ?Merci.
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));
?>
La solution
Quel que soit le $client->start()
La méthode revient, elle est typée en tant qu'objet.Vous pouvez accéder aux propriétés de l'objet à l'aide du ->
opérateur:
$procID = $client->start(array("prefix"=>"Genesis"));
...
$exchange = $client->exchangeOptions(array("processId"=>$procID->processId));
Il s'agissait probablement d'un tableau, mais il est saisi dans un objet.Ainsi, vous vous retrouvez avec le Classe std.
Une autre façon (et peut-être meilleure) de procéder consiste à saisir le retour.De cette façon, vous n'avez pas besoin de créer un nouveau tableau pour le passer ultérieurement en argument :
$procID = (array) $client->start(array("prefix"=>"Genesis"));
...
$exchange = $client->exchangeOptions($procID);
$end = $client->stop($procID);